小编典典

“文本”和新字符串(“文本”)有什么区别?

all

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

String s = "text";

String s = new String("text");

阅读 126

收藏
2022-06-10

共1个答案

小编典典

new String("text"); 显式地创建一个新的和引用不同的String对象实例;如果可用,可以重用 字符串常量池中*String s = "text";的实例。 *

很少 会想要使用new String(anotherString)构造函数。从 API:

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)构造函数。然而,需要再说一遍,这是 非常 奇特的,而且很少是有意的。

参考

2022-06-10