String s1="ABCDE";
String s3="ABC";
String s4=s3+"DE";
System.out.println(s4==s1);
各路大神:结果返回false的原因,资料上说是s4在运行期才能确定内容值。我们执行程序后,难道不是运行期?是的话既然确定了内容值,为嘛还不返回true?实在是理解不了,请大神指点。致谢
我把我删掉的那一行s2加上,麻烦大神再给看看:
String s2="ABC"+"DE";
System.out.println(s2==s1);
这样生成的是新的对象不?结果返回的是true
字符串直接常量相加的时候,例如: String c = "aa" + "bb"; 其中的aa/bb只要有任何一个不是字符串字面常量形式,都不会在常量池生成"aabb". 且此时jvm做了优化,不会同时生成"aa"和"bb"在字符串常量池中