下面这两个陈述有什么区别?

String s = "text";

String s = new String("text");

答案

new String("text");显式创建一个新的且引用不同的实例String目的;String s = "text";可以重用来自的实例string constant pool如果有的话。

非常稀有 会想要使用new String(anotherString)构造函数。

String(String original):初始化一个新创建的 String对象,使其表示与参数相同的字符序列;

相关问题


参照区分是什么意思

检查以下代码片段:

    String s1 = "foobar";
    String s2 = "foobar";

    System.out.println(s1 == s2);      // true

    s2 = new String("foobar");
    System.out.println(s1 == s2);      // false
    System.out.println(s1.equals(s2)); // true

==对两个引用类型进行引用同一性比较。equals不一定====关于引用类型;equals需要用它来代替。

尽管如此,如果出于某种原因您需要创建两个equals但不是==字符串,你 使用new String(anotherString)构造函数。非常奇特的,而且很少是意图。

参考

相关问题

来自: stackoverflow.com