| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:[讨论] 一道String的问题
只看楼主 加入收藏
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
 问题点数:0 回复次数:16 
[讨论] 一道String的问题
public class StringTest
{

public static void main(String[] args)
{
String str1 = "hello";
String str2 = "hel";
str2 = str2 + "lo";
System.out.println("str1 == str2 :" + (str1 == str2));
}
}

//为什么会打出false呀?

[此贴子已经被作者于2007-2-14 16:43:43编辑过]

搜索更多相关主题的帖子: String 
2007-02-14 16:35
支离破碎
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:737
专家分:0
注 册:2007-1-4
收藏
得分:0 
字符串比较用equals

人生漂泊無依,有如浮萍菱花,隨水飄流,你会在我这里停留吗?
[url=http://51mynet.]http://51mynet.[/url]
2007-02-14 17:28
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

每一本书..都有讲到比较字符串的方法..在网上也一大堆...竟然还有人在问..

我的msn: myfend@
2007-02-14 17:34
dingoo
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2006-10-10
收藏
得分:0 

也可以用String类的CompareTo(String s)方法


2007-02-14 20:42
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 


哎...如果声明一个字符串,那么这个字符串指象的对象是不是应该在字符串常量池中?

如String str1 = "hello";
那么字符串str2 后来也等于"hello"呀,按说应该和str1指向相同的引用,为什么str1==str2会返回false?

此段程序在c#中是返回的true;很奇怪,所以来问问.....


请有真知水平的朋友来回答问题...如果你看不起这个问题,你可以不泄,但请你也闭嘴!


我在说's blog   http://www..cn
2007-02-14 23:05
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
str1是在内存池没错,但str2不是~
你用个反编译工具反编译一下class文件就会发现
str2 =str1+"lo";
实际上是:
str2 = (new StringBuilder()).append(str2).append("lo").toString();
显然,str2是new出来滴(不信去看看StringBuilder的源代码),so...

My BlogClick Me
2007-02-14 23:13
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
new出来不也一样在内存中么

win32汇编
病毒 加密
目前兴趣所在
2007-02-14 23:32
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
以下是引用Eastsun在2007-2-14 23:13:09的发言:
str1是在内存池没错,但str2不是~
你用个反编译工具反编译一下class文件就会发现
str2 =str1+"lo";
实际上是:
str2 = (new StringBuilder()).append(str2).append("lo").toString();
显然,str2是new出来滴(不信去看看StringBuilder的源代码),so...

谢谢!我去查看下..但按说str2怎么会new一下呀..太郁闷了.......
你有没有什么好的反编译工具?


我在说's blog   http://www..cn
2007-02-14 23:43
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
回楼上上:new出来的是在内存里面,事实上是在里面;而通过String str ="xxxx";得到的是在常量内存池里面.
任意两个new出来的String都不会指向同一个内存地址;而对同一个字符串,常量内存池里面最多只有一个备份.

[此贴子已经被作者于2007-2-15 1:31:44编辑过]


My BlogClick Me
2007-02-15 00:03
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
我的意思就是

“str1是在常量内存池没错,但str2不是~而是在堆内存”

win32汇编
病毒 加密
目前兴趣所在
2007-02-15 00:19
快速回复:[讨论] 一道String的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033102 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved