Java字符串池测试不起作用

时间:2014-12-28 20:31:39

标签: java string pool

在阅读了Java String Pool之后,我决定进行一些测试。 我已经编写了以下测试程序,它的结果与根据JDK规范的Java字符串池行为不匹配。

public class Temp_20141220 {

    private String b1 = "hello";

    public static void main(String[] args) {
        Temp_20141220 t = new Temp_20141220();
        String b = "hello";
        System.out.println("b==b1 =" + t.b1 == b);
    }
}

我一直期待得到输出:b == b1 = true 但我得到了:b == b1 = false

为什么这样? Ubuntu的JVM不支持这个Java字符串池功能吗?

2 个答案:

答案 0 :(得分:9)

System.out.println("b==b1 =" + t.b1 == b);

相当于

System.out.println( ("b==b1 =" + t.b1) == b);

您在b"b==b1 ="t.b1的串联之间应用引用相等。

答案 1 :(得分:3)

您正在比较两个不同的字符串:

  1. 字符串为"b==b1 =" + t.b1
  2. string is b
  3. 如果您将代码更改为:

    System.out.println("b==b1 =" + (t.b1 == b));
    

    你将在输出中得到真实