这是什么" blabla"从Java的角度来看?

时间:2017-03-12 20:24:32

标签: java

我想知道是否

String s = new String("blabla");

完全相同
String s = "blabla";

我认为对于第一个这个String类的构造函数被调用:

 public String(char value[]) {
        this.value = Arrays.copyOf(value, value.length);
    }

但不确定第二个是否相同。

换句话说,这是什么" blabla"从Java的角度来看?

所以使用String s = "blabla"; s String类的新立场是什么时候?如果是,它的哪个构造函数被调用?

1 个答案:

答案 0 :(得分:0)

实际上你可能已经知道String是一个不可变类,这意味着一旦它被初始化它就不能再被改变了,所以这就是为什么有两个创建字符串的原因。

  1. String s = "blabla":此处创建此String并将其推送到字符串常量池(如果它尚不存在)。
  2. String s = new String("blabla"):但是像这样,每次都会创建一个新的String,而不检查它是否已经存在于池中。
  3. 注意:String s = new String("blabla").intern()相当于String s = "blabla"