我一直在深入研究Java中的String类.Java中的字符串由字符数组支持.
要创建具有初始值的字符串,我们将构造函数称为:
/* String creation */
String s = new String("example");
Run Code Online (Sandbox Code Playgroud)
String类中的构造函数代码是:
public String(String original) {
this.value = original.value;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下"original.value"的逻辑.从源代码中,我理解它返回字符数组.但java如何生成它?
该"foo"语法已经构建的String情况下,它的语法糖,这样你就不必写:
String foo = new String(new char[]{'f', 'o', 'o'});
Run Code Online (Sandbox Code Playgroud)
因此,当您调用时,new String("foo")您已经构建了一次字符串,并且现在正在创建第一个字符串的副本 - 而不是 "创建具有初始值的字符串".
有效的Java:第5项更详细地讨论了这一点,并且不鼓励使用new String(String)构造函数.