Where is the constructor String(int, int, char[]) defined?

efong5 :

I am trying to understand the implementation of Integer.toString(), which looks like this:

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);
}

And I ran into the last line, which doesn't look like any of the constructors in the String class, except this one:

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

...except that this function is called with the char[] argument first, unlike how it is being used in Integer.toString(). I was under the impression that changing the order of arguments counted as a change in the signature of the method, and would be a different overwrite of the method.

Why does this work, or am I interpreting this incorrectly?

user2357112 supports Monica :

That's using a package-private String constructor. It doesn't show up in the String Javadoc, because it's package-private.

If you check the String source code on the same site, you'll see

  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       }

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=472001&siteId=1