При поиске в коде метода:
Integer.toHexString
Я нашел следующий код:
public static String toHexString(int i) { return toUnsignedString(i, 4); } private static String toUnsignedString(int i, int shift) { char[] buf = new char[32]; int charPos = 32; int radix = 1 << shift; int mask = radix - 1; do { buf[--charPos] = digits[i & mask]; i >>>= shift; } while (i != 0); return new String(buf, charPos, (32 - charPos)); }
Вопрос в toUnsignedString: почему мы создаем char arr из 32 символов?
32 символа - это то, сколько вам нужно для представления int в двоичном формате (base-2, shift из 1, используется toBinaryString).
int
shift
toBinaryString
Это может быть точный размер, но я полагаю, что предпринимать такую оптимизацию никогда не имело смысла.
Поскольку этот метод также вызывается toBinaryString(), а int - это до 32 цифр в двоичном виде.
toBinaryString()
Поскольку максимальное значение для int в Java составляет: 2 ^ 31 - 1