本帖最后由 黑马肖凯骏 于 2012-3-6 17:47 编辑
int a=3,b=3;
return a==b 为true
String a=new String(c)
String b=new String(c)
a==b 为false
上面上都是3,下面内容都是c
可不可以这样理解,数值3只在堆内存中有一个,而a和b都指向了同一个堆内存
而下面的引用因为用到了NEW关键字 所以内存中是两个位置,a==b比较的实际上是内存地址
而equals 毕老师的操作是可以比较内容的,equals我不大理解,
请高手帮我判断一下我上面判断的是否正确呢?
感谢各位帮我解答,我已经弄明白是什么情况了!那么我再来解释一下吧!
"hello".equals("hello") 从这句话可以看出,对于String类型的"hello"就可以看做是一个匿名对象,而这个"hello"匿名对象调用了String中特有的equals()方法
然后才有了结果为true
综上所述== 和 equals 在String情况下的用法是不一样的! |