Java中的字符串重用

时间:2016-03-02 16:45:15

标签: java string

Java如何决定何时应创建新的String

我认为这取决于具体的JVM实现/编译器,但我认为这个测试的结果很有趣,可以提出这个问题:

class A { public String test = "test";}
class B { public String test = "test";}
...
public static void main (String[] args)
{
    String test = "test";
    System.out.println(test == "test");                // true
    System.out.println(test == new String("test"));    // false
    System.out.println(new A().test == new B().test);  // true
}

1 个答案:

答案 0 :(得分:3)

String文字总是被实习,这不是直接依赖于平台的。

除了通过构造函数(new String(someString))使用显式初始化惯用法之外。

在这种情况下,会创建一个新的Object,这会导致引用相等运算符(==)在您的示例中返回false

毋庸置疑,请始终使用equals进行可靠的String价值比较,但我怀疑这不属于您问题的范围。