为什么下面s3
and s5
String
对象不同,当s5
尝试在字符串池中创建它检查内容s3
已经有相同的内容了s5
refers s3
字符串池中的对象。但我的假设是错误的,那么任何人都可以纠正我。
String s1 = "Buggy";
String s2 = "Bread";
String s3 = "BuggyBread";
String s4 = "Buggy" + "Bread";
String s5 = s1 + s2
System.out.println(s3 == s4); // True
System.out.println(s3 == s5); //false
-
String s4 = "Buggy" + "Bread";
编译器足够聪明,可以意识到这只是常量BuggyBread
这已经在中引用了s3
。换句话说,s4
参考文献相同String
as s3
那是在字符串池中。
-
String s5 = s1 + s2;
这里编译器忠实地翻译为StringBuilder
基于变量内容的串联,这会产生一个差异引用s3
。换句话说,这类似于:
StringBuilder sb = new StringBuilder(s1);
sb.append(s2);
String s5 = sb.toString();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)