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

关于引用传递
Java code

String str1 = new String("abc");  
String str2 = "abc";  
System.out.println(str1==str2);



很疑惑,为什么返回值居然是false

------解决方案--------------------
2个不同的对象:
new String("abc") 这是一个对象
"abc" 这是另外一个对象

是不同的引用。
------解决方案--------------------
String str1 = new String("abc"); // 创建2个对象,一个在堆里,一个在字符串池。
String str2 = "abc"; //不创建对象,字符串池已有。
System.out.println(str1==str2); //两个地址不一样。一个指向堆,一个指向池。所以是false.




------解决方案--------------------
String str1 = new String("abc"); //str1指向的是堆内存的地址空间
String str2 = "abc"; //str2指向的是常量池的内存地址空
System.out.println(str1==str2); //肯定是false了

如果判断 字符串(或对象)是否相等 ,麻烦请用:str1.equals(str2)