以下哪一项是字符串(String)的实际Java字符串构造函数定义

以下哪一项是字符串(String)的实际Java字符串构造函数定义,java,string,constructor,Java,String,Constructor,对于带有一个字符串参数的字符串构造函数,我可以找到以下两个定义: public String(String original) { int size = original.count; char[] originalValue = original.value; char[] v; if (originalValue.length > size) { // The array representing

对于带有一个字符串参数的字符串构造函数,我可以找到以下两个定义:

public String(String original) {
        int size = original.count;
        char[] originalValue = original.value;
        char[] v;
        if (originalValue.length > size) {
            // The array representing the String is bigger than the new
            // String itself.  Perhaps this constructor is being called
            // in order to trim the baggage, so make a copy of the array.
            int off = original.offset;
            v = Arrays.copyOfRange(originalValue, off, off+size);
        } else {
            // The array representing the String is the same
            // size as the String, so no point in making a copy.
            v = originalValue;
        }
        this.offset = 0;
        this.count = size;
        this.value = v;
    }

不确定哪一个是原始实现


我们是否有第二次实现可能失败的场景?

您的SDK应该包括源代码。你可以看看那里。对于OpenJDK,您可以进行搜索。仅供参考,我检查了我的SDK的定义,它显示了第二个定义。更改是在java 1.7.0_06中引入的:您的SDK应该包括源代码。你可以看看那里。对于OpenJDK,您可以进行搜索。仅供参考,我检查了我的SDK的定义,它显示了第二个定义。更改是在java 1.7.0_06中引入的:
  public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }