字符串的引用

时间:2016-06-23 02:41:37

标签: java jvm

我刚刚开始学习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(堆,堆栈和常量池)中运行的细节,以弄清楚为什么结果会像这样。

0 个答案:

没有答案