黑马程序员技术交流社区
标题:
为什么第一条语句为false 第二条语句为true
[打印本页]
作者:
陈波
时间:
2012-6-2 17:07
标题:
为什么第一条语句为false 第二条语句为true
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
为什么第一条语句为false 第二条语句为true
作者:
丰亚彬
时间:
2012-6-2 17:10
字符串先从常量池里面找,第一次找ab没有,返回false,第二次比较时有ab拿过来直接用,所以地址值是同一个返回的是true
作者:
黄克帅
时间:
2012-6-2 17:59
== 比较的是地址值 是否一样。
"a" 有一个地址值 s1 + "b" 有一个地址值,它里面有个s1的引用指向 "a", "a" + "b" 是一个地址值 他里面装的就是a和b
作者:
胡团乐
时间:
2012-6-2 18:26
程序在运行的时候会创建一个字符串缓冲池
String s3 = "a" + "b";等于 String s3 = "ab"; 当拿s3和"ab"用==比较时 程序先在缓冲池里找,有就不创建了所以相等
String s3 = "a" + "b"; String s4="a" + "b"; s3==s4结果是true;
而String s2 = s1 + "b"; s1是"a"的引用 对于String s2 = s1 + "b";和String s3 = "a" + "b"; 分配的地址是不一样的 所以不相等;
==比较的是对象是否相同
equals比较的是对象的内容 如果用equals结果就都是true;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2