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

5

我正在尝试理解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
看一下String的实现。它可能有一些包私有的东西,在公共javadoc中不会显示出来。 - Mad Physicist
但(1+)用于检查API并提出有思考的问题。 - Hovercraft Full Of Eels
你在哪里看到所谓的代码?它不在Java 8中。 - Boann
2
@Boann:在这个链接里面,显然是openjdk-7。 - user2357112
1个回答

10

这是使用了一个包私有的String构造函数。它不会出现在String文档中,因为它是包私有的。

如果你在同一网站上检查String源代码,你会发现:

  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       }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接