定义
public final class Integer extends Number implements Comparable {}
Integer类在对象中包装了一个基本类型int的值。Integer类型的对象包含一个int类型的字段。
此外,该类提供了多个方法,能在int类型和String类型之间互相转换,还提供了处理int类型时非常有用的其他一些常量和方法。
关于Integer和int在面试的时候出现的频率很高。而我们所熟知的是Integer是int 的包装类型,int的初始值为0,Integer的初始值为null,这是基本都知道的。至于Integer的自动装箱和拆箱,以及Integer的缓存等小细节需要深入思考。
字段摘要
1、static int MAX_VALUE:保持 int类型的最大值的常量可取的值为 231-1。
2、static int MIN_VALUE:保持 int类型的最小值的常量可取的值为-231。
3、static int SIZE:以二进制补码形式表示 int 值的位数。
4、static Class TYPE:表示基本类型 int 的Class 实例。
方法摘要
构造方法
1、Integer(int value):构造一个新分配的 Integer 对象,它表示指定的 int 值。
2、Integer(String s):构造一个新分配的Integer 对象,它表示 String 参数所指示的 int 值。
将Integer类型转换为其他类型
1、byte byteValue():以 byte 类型返回该Integer 的值。
2、float floatValue():以 float 类型返回该Integer 的值。
3、int intValue():以 int 类型返回该Integer 的值。
4、long longValue():以 long 类型返回该Integer 的值。
5、short shortValue():以 short 类型返回该Integer 的值。
6、double doubleValue():以 double 类型返回该Integer 的值。
Integer类型与字符串的相互转换
1、static int parseInt(String s):将字符串参数作为有符号的十进制整数进行分析。
2、static int parseInt(String s, int radix):使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
3、static Integer valueOf(int i):返回一个表示指定的int值的Integer实例。
4、static Integer valueOf(String s):返回保持指定的 String的值的Integer 对象。
5、static Integer valueOf(Strings, int radix):返回一个 Integer 对象,该对象中保持了用第二个参数提供的基数进行分析时从指定的 String中提取的值。
6、static String toBinaryString(int i):以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
7、static String toHexString(int i):以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。
8、static String toOctalString(int i):以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
9、String toString():返回一个表示该 Integer 值的 String对象。
10、static String toString(int i):返回一个表示指定整数的 String对象。
11、static String toString(int i, int radix):用第二个参数指定的基数返回第一个参数的字符串表示形式。
其他方法
1、static int highestOneBit(inti):返回具有至多单个 1 位的 int 值,在指定的 int值中最高位(最左边)的 1 位的位置。
2、static int lowestOneBit(int i):返回具有至多单个 1 位的 int 值,在指定的 int值中最低位(最右边)的 1 位的位置。
3、static int numberOfLeadingZeros(int i):在指定 int 值的二进制补码表示形式中最高位(最左边)的1 位之前,返回零位的数量。
4、static int numberOfTrailingZeros(int i):返回指定的 int 值的二进制补码表示形式中最低(“最右”)的为1 的位后面的零位个数。
5、static int reverse(int i):返回通过反转指定 int 值的二进制补码表示形式中位的顺序而获得的值。
6、static int reverseBytes(int i):返回通过反转指定 int 值的二进制补码表示形式中字节的顺序而获得的值。
7、static int rotateLeft(int i,int distance):返回根据指定的位数循环左移指定的 int 值的二进制补码表示形式而得到的值。
8、static int rotateRight(int i,int distance):返回根据指定的位数循环右移指定的 int 值的二进制补码表示形式而得到的值。
9、static int bitCount(int i):返回指定 int 值的二进制补码表示形式的1 位的数量。
10、int compareTo(Integer anotherInteger):在数字上比较两个Integer 对象。
11、static Integer decode(String nm):将 String 解码为Integer。
12、boolean equals(Object obj):比较此对象与指定对象。
13、int hashCode():返回此 Integer 的哈希码。
14、static int signum(int i):返回指定 int 值的符号函数。
15、static Integer getInteger(String nm):确定具有指定名称的系统属性的整数值。
16、static Integer getInteger(String nm, int val):确定具有指定名称的系统属性的整数值。
17、static Integer getInteger(String nm, Integer val):返回具有指定名称的系统属性的整数值。
案例:
public static void main(String[] args) {
// highestOneBit:返回具有至多单个 1 位的 int 值,在指定的 int 值中最高位(最左边)的 1 位的位置。
// 意思就是保留改数的最高位的1,其余数字置为0。即获得一个跟它最靠近的比它小的2的N次方(若参数为负数,返回-2147483648)
// 0001 0001 ---> 0001 0000
System.out.println(Integer.highestOneBit(17));// 16
// 1111 ---> 1000
System.out.println(Integer.highestOneBit(15));// 8
System.out.println(Integer.highestOneBit(32));// 32
System.out.println(Integer.highestOneBit(63));// 32
System.out.println(Integer.highestOneBit(0)); // 0
System.out.println(Integer.highestOneBit(-1));// -2147483648
// lowestOneBit(int i):返回具有至多单个 1 位的 int 值,在指定的 int 值中最低位(最右边)的 1 位的位置。
// 即最低一位1保留,其余位置为0.
// 0001 0001 ---> 0000 0001
System.out.println(Integer.lowestOneBit(17));// 1
// 1100 ---> 0100
System.out.println(Integer.lowestOneBit(12));// 4
// rotateLeft(int i, int distance):返回根据指定的位数循环左移指定的 int 值的二进制补码表示形式而得到的值。
// 二进制左移一位相当于乘以2,左移distance相当于乘以2^distance
System.out.println(Integer.rotateLeft(12, 3));// 96
System.out.println(Integer.rotateLeft(3, 2));// 12
// rotateRight(int i, int distance):返回根据指定的位数循环右移指定的 int 值的二进制补码表示形式而得到的值。
// 二进制右移一位相当于除以2,左移distance相当于除以2^distance
System.out.println(Integer.rotateRight(12, 2));// 3
// 不同进制之间互相转换
// 字符串十进制转成二进制
System.out.println(Integer.toBinaryString(14)); // 1110
System.out.println(Integer.toString(14, 2));// 1110
// 字符串十进制转成八进制
System.out.println(Integer.toOctalString(14)); // 16
System.out.println(Integer.toString(14, 8));// 16
// 字符串十进制转成十六进制
System.out.println(Integer.toHexString(14)); // e
System.out.println(Integer.toString(14, 16)); // e
// toString可以方便得将Integer转换为任意进制
System.out.println(Integer.toString(14, 7));// 20
// valueOf以及parseInt可将任意进制表示的字符串转换为Integer
// 提供的进制参数表示用该进制基数来解析字符串,转换为10进制的int值
System.out.println(Integer.valueOf("0110", 2));// 6
System.out.println(Integer.valueOf("A6", 16));// 166
System.out.println(Integer.parseInt("0110", 2));// 6
System.out.println(Integer.parseInt("A6", 16));// 166
}