==与equals的区别?
==比较的是句柄值,而equals()比较的是内容。
名柄具体怎么理解?
问题点数:25、回复次数:6Top
1 楼ycats(加菲猫)回复于 2001-11-21 16:19:48 得分 25
你可以这么理解:
A==B,比较句柄,就是比较变量A,B的地址存放的东西,比如int A=0;String B="bbbb";那么变量A的地址方的就是0,B的地址却是放着存放"bbbb"的地址,比如是#FFFF000之类的。所以A==B就是比较0和FFFF000啦。
而A.equals(B),就是在A和B都是引用(对象句柄,就是存放了对象地址啦)时,比较A,B存放的地址里的内容。比如A="aaaa",b="aaaa",两个"aaaa"不管是不是同一个,A.equals(B)都是真。Top
2 楼qiuchb(秋秋)回复于 2001-11-22 09:54:59 得分 0
按你的说法:
String A="",B="";时是不是应该已经分配了地址,而且应该不同吧?
然后A="ab";B="ab";A==B此不是也不同了?我怎么觉得比较的不是地址?Top
3 楼ycats(加菲猫)回复于 2001-11-22 10:04:03 得分 0
A="ab";B="ab"时 A==B是返回false的。Top
4 楼ycats(加菲猫)回复于 2001-11-22 10:08:40 得分 0
刚才草率了。注意,A="ab";B="ab"中的"ab"使用常量的方式,因此两个指向同一个,你要是试试以下就知道:
String a=new String("ab");
String b=new String("ab");
if (a==b)System.out.println("a==b");
if (a.equals(b))System.out.println("aEQb");
Top
5 楼KingRabbit(兔子王)回复于 2001-11-22 10:41:56 得分 0
加菲猫放精屁Top
6 楼qiuchb(秋秋)回复于 2001-11-22 10:58:04 得分 0
我觉得直接分配ab是指向同一个,但如果最先不同,后来赋值相同。这时,会相等吗?
还有一个:
我在一个程序中如果用temp=="1"是对的,但如果用temp.equals("1"),则会出错。为什么?Top




