“文本”和 new String(“文本”) 有什么区别?

2024-03-23

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

String s = "text";

String s = new String("text");

new String("text");显式创建一个新的且引用不同的实例String目的;String s = "text";可以重用来自的实例字符串常量池如果有的话。

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

String(String original) http://java.sun.com/javase/6/docs/api/java/lang/String.html#String%28java.lang.String%29:初始化一个新创建的 String对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。除非需要原始的显式副本,否则不需要使用此构造函数,因为字符串是不可变的。

相关问题

  • Java 字符串:“String s = new String(”silly“);” https://stackoverflow.com/questions/334518/java-strings-string-s-new-stringsilly
  • 字符串是Java中的对象,那么为什么我们不使用“new”来创建它们呢? https://stackoverflow.com/questions/2009228/strings-are-objects-in-java-so-why-dont-we-use-new-to-create-them

参照区分是什么意思

检查以下代码片段:

    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但不是==字符串,你can使用new String(anotherString)构造函数。不过,需要再次强调的是,这是very奇特的,而且很少是意图。

参考

  • JLS 15.21.3 引用相等运算符 == 和 != http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.21.3
  • class Object - boolean Object(equals) http://java.sun.com/javase/6/docs/api/java/lang/Object.html#equals%28java.lang.Object%29

相关问题

  • Java String.equals 与 == https://stackoverflow.com/questions/767372/java-string-equals-versus
  • 如何在 Java 中比较字符串? https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“文本”和 new String(“文本”) 有什么区别? 的相关文章

随机推荐