java - Java 中由 new String() 和 new String (""进行的字符串初始化有什么区别?

标签 java string initialization

Java中以下两种初始化有什么区别?

  1. String a = new String();
  2. String b = new String("");

最佳答案

嗯,它们几乎一样

public static void main(String[] args) {
    String s1 = new String();
    String s2 = new String(""); 
    System.out.println(s1.equals(s2)); // returns true.
}

细微差别(相当微不足道):

  1. new String(); 的执行时间比 new String(""); 少,因为复制构造函数做了很多事情。

  2. new String("") 如果空字符串 ("") 尚不存在,则将其添加到字符串常量池中。

除此之外,没有其他区别

注意:new String("abc") 的使用几乎总是不好的,因为您将创建 2 个字符串,一个在字符串常量池上,另一个在堆上具有相同的值。

关于java - Java 中由 new String() 和 new String (""进行的字符串初始化有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29535409/

相关文章:

c - 在C中初始化char数组

java - 在 super 构造函数运行之前初始化字段?

c++ - 如何避免在基类初始值设定项中调用默认构造函数?

java - 如何修复 Windows 7 UDP 回复 Linux UDP 连接创建者? Linux 到 Linux 工作但 Linux 到 Windows 7 不工作的地方

java - 在 Java 中将随机生成的数字相加

java - 字符串 intern() 行为

python - 针对十亿个字符串的前缀搜索

java - 不同版本 Android 中跨包的 protected 内部类可见性的差异

java - 尝试将数据输入数组时不兼容的类型

java - 遇到变量无法打印和\n 无法工作的问题