# 一、概述

Integer是对基本数据类型int的一个包装，类定义如下：

public final class Integer extends Number implements Comparable<Integer> 

# 二、主要方法

### 3.toHexString、toOctalString、toBinaryString

    private static String toUnsignedString0(int val, int shift) {
// assert shift > 0 && shift <=5 : "Illegal shift value";
int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val);
int chars = Math.max(((mag + (shift - 1)) / shift), 1);
char[] buf = new char[chars];

formatUnsignedInt(val, shift, buf, 0, chars);

// Use special constructor which takes over "buf".
return new String(buf, true);
}

### 6.public static Integer decode(String nm)

String解码为Integer 。 接受以下语法给出的十进制，十六进制和八进制数：

• DecimalNumeral
• 0x HexDigits
• 0X HexDigits
• # HexDigits
• 0 OctalDigits
• -
• +
    public static Integer decode(String nm) throws NumberFormatException {
int index = 0;
boolean negative = false;
Integer result;

if (nm.length() == 0)
throw new NumberFormatException("Zero length string");
char firstChar = nm.charAt(0);
// Handle sign, if present
if (firstChar == '-') {
negative = true;
index++;
} else if (firstChar == '+')
index++;

// Handle radix specifier, if present
if (nm.startsWith("0x", index) || nm.startsWith("0X", index)) {
index += 2;
}
else if (nm.startsWith("#", index)) {
index ++;
}
else if (nm.startsWith("0", index) && nm.length() > 1 + index) {
index ++;
}

if (nm.startsWith("-", index) || nm.startsWith("+", index))
throw new NumberFormatException("Sign character in wrong position");

try {
result = negative ? Integer.valueOf(-result.intValue()) : result;
} catch (NumberFormatException e) {
// If number is Integer.MIN_VALUE, we'll end up here. The next line
// handles this case, and causes any genuine format error to be
// rethrown.
String constant = negative ? ("-" + nm.substring(index))
: nm.substring(index);
}
return result;
}

### 8.highestOneBit、lowestOneBit

• 如果一个数是0, 则返回0；
• 如果是负数, 则返回 -2147483648：【1000,0000,0000,0000,0000,0000,0000,0000】(二進制表示的數)；
• 如果是正数, 返回的则是跟它最靠近的比它小的2的N次方

highestOneBit(17)返回的是最高位的1个1, 其它全是0 的二进制數：【0000,0000,0000,0000,0000,0000,0001,0000】，其实就是16。

# 三、特殊之处

### 1.静态私有类private static class IntegerCache

-128到127之间的会被缓存，高值可以通过JVM参数java.lang.Integer.IntegerCache.high进行设置。

©️2019 CSDN 皮肤主题: 终极编程指南 设计师: CSDN官方博客