【发布时间】:2017-10-08 08:55:23
【问题描述】:
String a = "x";
String b = a + "y";
String c = "xy";
System.out.println(b==c);
为什么会打印 false?
根据我的理解,“xy”(即 a+“y”)将被实习,当创建变量 c 时,编译器将检查字符串常量池中是否存在文字“xy”,如果存在,它将分配相同的引用c.
注意:我不是在问 equals() 与 == 运算符。
【问题讨论】:
-
"xy"被实习,但a+"y"的结果不是,实习的"xy"也没有被用作结果,因为a不是最终结果。 -
除了其他答案:也尝试,避免依赖它。重用代码是脆弱的。
标签: java string constants pool