Java String"".value

Pra*_*nth 2 java

我一直在深入研究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如何生成它?

dim*_*414 5

"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)构造函数.