黑马程序员技术交流社区

标题: 这题为什么是false [打印本页]

作者: belowfox    时间: 2016-8-2 14:43
标题: 这题为什么是false
[AppleScript] 纯文本查看 复制代码
String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);


作者: Frankle    时间: 2016-8-3 17:16
==判断的是地址值,str1和str2两个对象引用的地址值不相同,所以是false。用equals(Object obj)方法可以比较对象的内容是否相同
作者: zhangjiesss    时间: 2016-8-3 17:46
地址值不一样,用equals方法
作者: cat73    时间: 2016-8-3 18:05
实际上,这个题的结果是 true 还是 false 是不确定的。
题目应该声明的更严谨一些,如:在 Oracle Java7 JVM 上运行下面代码会输出什么。

作者: accomplonely    时间: 2016-8-3 19:46
这是对象的比较对吧,两个对象的地址值不一样啊 ,所以肯定是false。还有一个可能String s="abc";String s1="abc“; 这个s==s1就是true,因为一开始会在常量池里面创建s,之后s1发现常量池已经有了所以就不创建,就是一个地址值
作者: itcoder    时间: 2016-8-3 22:47
str1是一个地址,str2又是new出来的,又是一个地址,两个地址是不一样滴!
作者: 烟雨江南12    时间: 2016-8-3 23:43
两个地址值不同,所以是false~
作者: qetu001212    时间: 2016-8-3 23:59
因为+底层是用StringBuffer或者StringBuilder做的,第一个在常量池,第二个在堆内存
作者: qetu001212    时间: 2016-8-4 00:01
因为+底层是用StringBuffer或者StringBuilder做的,第一个在常量池,第二个在堆内存
作者: allenli    时间: 2016-8-4 00:24
== 号 比较的是地址和内容 str2 是另一个对象 地址值不同




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2