我刚刚开始学习java,我遇到了一些令人困惑的代码:
String s0 = new String("tava");
System.out.println(s0 == s0.intern());
String s1 = "hava";
String s2 = new StringBuilder("ha").append("va").toString();
System.out.println(s2 == s2.intern());
String s3 = new StringBuilder("ga").append("va").toString();
System.out.println(s3 == s3.intern());
String s4 = new StringBuilder("lava").toString();
System.out.println(s4 == s4.intern());
String s5 = new StringBuilder("ja").append("va").toString();
System.out.println(s5 == s5.intern());
结果是:
false
false
true
false
false
我的jdk是1.8,我想知道它在JVM(堆,堆栈和常量池)中运行的细节,以弄清楚为什么结果会像这样。