开发者

A question in java.lang.Integer internal code

开发者 https://www.devze.com 2022-12-28 10:17 出处:网络
While looking in the code of the method: Integer.toHexString I found the following code : public static String toHexString(int i) {

While looking in the code of the method:

Integer.toHexString

I found the following code :

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 >>>= shi开发者_StackOverflow社区ft;
    } while (i != 0);

    return new String(buf, charPos, (32 - charPos));
}

The question is, in toUnsignedString, why we create a char arr of 32 chars?


32 characters is how much you need to represent an int in binary (base-2, shift of 1, used by toBinaryString).

It could be sized exactly, but I guess it has never made business sense to attempt that optimisation.


Because that method is also called by toBinaryString(), and an int is up to 32 digits in binary.


Because the max value for an int in Java is : 2^31 - 1

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号