Вопрос во внутреннем коде java.lang.Integer - PullRequest
4 голосов
/ 29 апреля 2010

При поиске в коде метода:

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 символов?

Ответы [ 3 ]

9 голосов
/ 29 апреля 2010

32 символа - это то, сколько вам нужно для представления int в двоичном формате (base-2, shift из 1, используется toBinaryString).

Это может быть точный размер, но я полагаю, что предпринимать такую ​​оптимизацию никогда не имело смысла.

2 голосов
/ 29 апреля 2010

Поскольку этот метод также вызывается toBinaryString(), а int - это до 32 цифр в двоичном виде.

1 голос
/ 29 апреля 2010

Поскольку максимальное значение для int в Java составляет: 2 ^ 31 - 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...