Java中新String()和新String("")的字符串初始化有什么区别?

use*_*425 22 java string initialization

Java中的以下两个初始化之间有什么区别?

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

The*_*ind 20

嗯,它们几乎是一样的.

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

微小的差异(相当微不足道):

  1. new String();执行所花费的时间少于new String("");复制构造函数执行的操作.

  2. new String("")将空String("")添加到String常量池(如果它尚不存在).

除此之外,没有其他差异

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

  • @GrijeshChauhan为什么不只是``"`? (3认同)