繁体   English   中英

java.lang.Integer内部代码中的一个问题

[英]A question in java.lang.Integer internal code

在查看方法的代码时:

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中,为什么我们创建一个包含32个字符的char arr?

32个字符是你需要多少来表示二进制中的int (base-2, shift为1,由toBinaryString )。

它的大小可能完全正确,但我认为尝试优化从来没有商业意义。

因为toBinaryString()也调用了该方法,并且int二进制数最多为32位。

因为Java中int的最大值是:2 ^ 31 - 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM