奇怪的字符串池行为
我有一个关于一些奇怪的字符串池行为的问题。我用来比较相等的字符串,以确定它们是否在池中。==
public class StringPoolTest {
public static void main(String[] args) {
new StringPoolTest().run();
}
String giveLiteralString() {
return "555";
}
void run() {
String s1 = giveLiteralString() + "";
System.out.println("555" == "555" + "");
System.out.println(giveLiteralString() == giveLiteralString() + "");
}
}
输出为:
true
false
这对我来说是一个很大的惊喜。任何人都可以解释一下吗?我认为在编译时正在发生一些事情。但是,为什么添加到字符串中会有什么不同呢?""