关于引用传递
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)