首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于引用传递解决方案

2012-05-22 
关于引用传递Java codeString str1 new String(abc)String str2 abcSystem.out.println(str1s

关于引用传递

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) 





热点排行