黑马程序员技术交流社区
标题:
这题为什么是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