日期:2014-05-20  浏览次数:20814 次

"=="与“equals()”的区别
class Code {
public static void main(String[] args) {
String a = "abc";
String b="ab";
String c=b+"c";
System.out.println(a.equals(c));
   
  String a = "abc";  
String b="ab";
String c=b+"c";
System.out.println(a==c);
   
}
}  
请各位高手指点:帮忙分析一下内存。谢上。

------解决方案--------------------
"equals()"比较的是在内存地址空间的内容是否相同;

"=="比较的是在内存空间的地址是否相同,

a和c的存储地址是不同的,但是内容相同,

所以 equals()的值为true,而 == 的值为false
------解决方案--------------------
我帮楼主分析下内存,觉得好的话就给点分。
首先我给你讲下 String ,String是不可变字符串常量。
例如:String S="ABC";
1,是将ABC常量字符串放到常量池中。
2,接着会创建一个匿名对象,匿名对象指向常量池中的内容。
3,将常量池中的引用赋值给S。
所以 String是不能改变的。
String s=new String("ABC");
如果是第二种情况,先检查常量池中是否有ABC,有的话也需要创建一个新的对象。切记不会使用原来的匿名对象。equals()比较的是在内存地址空间的内容是否相同;"=="比较的是在内存空间的地址是否相同
你可以分析下 内存就非常清楚啦!!!


------解决方案--------------------
浅尝辄止

一楼完全对吗? 糊弄新手...

诶 。。。