美文网首页我爱编程Java 杂谈
使用双引号还是构造函数创建Java字符串?

使用双引号还是构造函数创建Java字符串?

作者: 打铁大师 | 来源:发表于2018-04-14 20:36 被阅读0次

原文:Create Java String Using ” ” or Constructor?

在Java中,创建字符串有两种方式:

String x = "abc";
String y = new String("abc");

双引号与构造函数创建字符串,有什么区别?

双引号 vs 构造函数

这个问题可以用两个简单的例子来解答。

Example 1:

String a = "abcd";
String b = "abcd";
System.out.println(a == b);  // True
System.out.println(a.equals(b)); // True

a==b 为true,是因为a和b都引用了方法区内的同一个字符串字面量。内存引用是相同的。

当相同的字符串字面量被创建多次时,只会储存一个字符串副本。这个被称为‘字符串驻留’。

Example 2:

String c = new String("abcd");
String d = new String("abcd");
System.out.println(c == d);  // False
System.out.println(c.equals(d)); // True

c==d为false,因为c和d指向堆中的不同对象。不同对象总是有不同的内存引用。

图说明了上述两种情况:

constructor-vs-double-quotes-Java-String-New-Page-650x324.png

运行时字符串驻留

即使两个字符串是用构造函数构造的,字符串驻留仍然会在运行时完成:

String c = new String("abcd").intern();
String d = new String("abcd").intern();
System.out.println(c == d);  // Now true
System.out.println(c.equals(d)); // True

注: intern()方法,为每个唯一的字符序列生成一个且仅生成一个String引用。

3.何时使用哪个?

因为字面量‘abcd’已经是String类型,因此使用构造函数会创建一个额外的不必要的对象。因此,如果你仅仅是需要创建一个字符串,双引号应该被使用。

如果你需要在堆中创建一个对象,构造函数应该被使用。这里有个用例

相关文章

  • 使用双引号还是构造函数创建Java字符串?

    原文:Create Java String Using ” ” or Constructor? 在Java中,创建...

  • 随笔记录

    字串符操作与数学函数 字符串 1.字符串的创建 A.使用string()构造函数: 在js里只要用双引号或单引号引...

  • Object对象

    Object构造函数 01 使用Object构造函数创建字符串对象 02 使用Object构造函数创建数字对象 0...

  • 原生JS-07

    什么字符串:所谓字符串就是用单引号或双引号括起来的0个或多个字符 字符串对象的创建方法:a) 方法1:使用构造函数...

  • 使用双引号""创建Java字符串还是使用St

    在Java中,一个字符串可以使用下面这两种方式进行创建: 这两种创建字符串的方式有什么不同呢? 双引号 VS 构造...

  • Dart语法总结

    1 字符串创建 1.1 使用单引号,双引号创建字符串 1.2 使用三个引号或双引号创建多行字符串 1.3 使用r创...

  • JavaScript学习总结之String类型

    String是字符串的对象包装类型,可以使用String构造函数来创建。** var stringObject =...

  • js中的字符串操作

    1,字符串的创建(1)使用String()构造函数 var str= new String()(2)使用字面量 v...

  • 工厂函数(factory)与构造函数(constructor)

    工厂函数(factory) 使用工厂函数新建对象: 构造函数(constructor) 使用构造函数创建新对象: ...

  • js原型和原型链

    构造函数创建对象 先使用构造函数创建一个对象: 这个例子中,Person就是一个构造函数,我们使用new创建了一个...

网友评论

    本文标题:使用双引号还是构造函数创建Java字符串?

    本文链接:https://www.haomeiwen.com/subject/nxqrkftx.html