构造函数String(int,int,char [])在哪里定义?

时间:2017-08-05 01:33:41

标签: java string constructor

我正在尝试理解Integer。toString()的实现,如下所示:

public static String toString(int i) {
    if (i == Integer.MIN_VALUE)
        return "-2147483648";
    int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
    char[] buf = new char[size];
    getChars(i, size, buf);
    return new String(0, size, buf);
}

我遇到了最后一行,它看起来不像String类中的任何构造函数,除了这一行:

String(char value[], int offset, int count) 

...除了首先使用char []参数调用此函数,不像它在Integer.toString()中使用它的方式。我的印象是,改变参数的顺序计为方法签名的变化,并且会对方法进行不同的覆盖。

为什么这样做,或者我是否错误地解释了这个?

1 个答案:

答案 0 :(得分:10)

那是使用包私有String构造函数。它没有显示在String Javadoc中,因为它是包私有的。

如果您在同一网站上查看String source code,则会看到

  644       // Package private constructor which shares value array for speed.
  645       String(int offset, int count, char value[]) {
  646           this.value = value;
  647           this.offset = offset;
  648           this.count = count;
  649       }