Integer为基础类型int的包装类型,int基础类型的默认值为0,Integer包装类型的默认值为null。
Integer数值范围
- 占用空间:32位/8=4字节 (31数值位+1位符号位)
- 最小值定义为
MIN_VALUE = 0x80000000
- 十六进制:80000000
- 二进制:10000000000000000000000000000000
- 十进制:-2147483648(-2^32)
- 最大值定义为
MAX_VALUE = 0x7fffffff
- 十六进制:7fffffff
- 二进制:01111111111111111111111111111111
- 十进制:2147483647(既2^32-1)
Integer二进制/八进制/十六进制转化
-
执行**Integer.toBinaryString(i)**方法返回int值的二进制字符串
-
测试代码
public static void showOtherString(int i) { System.out.println(i + "的二进制表示为:" + Integer.toBinaryString(i)); System.out.println(i + "的八进制表示为:" + Integer.toOctalString(i)); System.out.println(i + "的十六进制表示为:" + Integer.toHexString(i)); } public static void main(String[] args) { //显示int的二进制、八进制、十六进制字符串 showOtherString(8); showOtherString(255); }
-
输出结果
8的二进制表示为:1000 8的八进制表示为:10 8的十六进制表示为:8 255的二进制表示为:11111111 255的八进制表示为:377 255的十六进制表示为:ff
Integer值的二进制1的个数
-
执行**Integer.bitCount(i)**方法返回int值的二进制中包含1的个数
-
测试代码
public static void main(String[] args) { int[] values = {8, 255}; for (int value : values) { System.out.println(value + "的二进制为:" + Integer.toBinaryString(value) + ",bitCount为:" + Integer.bitCount(value)); } }
-
输出结果
8的二进制为:1000,bitCount为:1 255的二进制为:11111111,bitCount为:8
所以**Integer.bitCount(i)**方法还可以判断传入的i值是否为2的整次幂。disruptor框架的ringBufferSize判断是否2的整次幂就是使用了该方法,详见
com.lmax.disruptor.AbstractSequencer#AbstractSequencer
类.- 判断int值是否为2的整次幂
public static boolean isPowerOfTwo(int i) { return Integer.bitCount(i) == 1; } public static void main(String[] args) { System.out.println("10是否是2的整次幂:" + isPowerOfTwo(10)); System.out.println("32是否是2的整次幂:" + isPowerOfTwo(32)); System.out.println("64是否是2的整次幂:" + isPowerOfTwo(64)); } //输入 10是否是2的整次幂:false 32是否是2的整次幂:true 64是否是2的整次幂:true
Integer的符号位
-
**Integer.signum(i)**方法返回int值的符号位-1(表示负数)、0(表示0)、1(表示正数)
-
测试代码
/** * 显示int值的符号位-1(表示负数)、0(表示0)、1(表示正数) * * @param i */ public static void showSignNum(int i) { System.out.println(i + "的符号位为:" + Integer.signum(i)); } public static void main(String[] args) { //符号位 showSignNum(Integer.MIN_VALUE); showSignNum(0); showSignNum(Integer.MAX_VALUE); }
-
输出结果
-2147483648的符号位为:-1 0的符号位为:0 2147483647的符号位为:1