Integer
1.类不可继承
2.值不可改变
3.包装类拆箱与装箱
在编译器自动完成
编译结果
4.Number 父类
是所有数值类型的父类
5.toBinaryString 输出十进制数的相应二进制表达式
执行流程分析:
radix = 1 << 1 ==> 2 ;
mask = radix - 1 = 1 ;
charPos = 32
循环,do while 先执行,然后判断是否满足条件
-- charPos ==> charPos = 31 数组最后一位,数组总容量32 ,Java中int 占 4字节,32bit
i & mask ==> 10 & 01 = 0
buf[31] = digits[0] = 0
i >>>= 1 ==> 2 向右移动一位 ==》 1
-- charPos ==> charPos = 30
i & mask = 01 & 01 = 01 ==> 1
buf[32] = digits[1] = 1
i >>>= 1 ==> 1 向右移动一位 ==》 0
退出循环
流程总结:
mask 为标记位,每次与目标值相与操作后,得到目标值的最后一位
新建数组存放得到的数据值
将目标值向右移动,左侧补零;再重复上述过程,直到目标值为0
1.类不可继承
2.值不可改变
/**
* The value of the <code>Integer</code>.
*
* @serial
*/
private final int value;
3.包装类拆箱与装箱
在编译器自动完成
Integer a = 100 ;
Integer b = 100 ;
Integer c = 200 ;
Integer d = 200 ;
Integer e = c + d ;
System.out.println(a==b);
System.out.println(a==100);
System.out.println(c==d);
System.out.println(c==200);
System.out.println(e);
编译结果
Integer localInteger1 = Integer.valueOf(100);
Integer localInteger2 = Integer.valueOf(100);
Integer localInteger3 = Integer.valueOf(200);
Integer localInteger4 = Integer.valueOf(200);
Integer localInteger5 = Integer.valueOf(localInteger3.intValue() + localInteger4.intValue());
System.out.println(localInteger1 == localInteger2);
System.out.println(localInteger1.intValue() == 100);
System.out.println(localInteger3 == localInteger4);
System.out.println(localInteger3.intValue() == 200);
System.out.println(localInteger5);
4.Number 父类
是所有数值类型的父类
5.toBinaryString 输出十进制数的相应二进制表达式
public static String toBinaryString(int i) {
return toUnsignedString(i, 1);
}
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));
}
String binaryString = Integer.toBinaryString(2);
System.out.println(binaryString);
执行流程分析:
radix = 1 << 1 ==> 2 ;
mask = radix - 1 = 1 ;
charPos = 32
循环,do while 先执行,然后判断是否满足条件
-- charPos ==> charPos = 31 数组最后一位,数组总容量32 ,Java中int 占 4字节,32bit
i & mask ==> 10 & 01 = 0
buf[31] = digits[0] = 0
i >>>= 1 ==> 2 向右移动一位 ==》 1
-- charPos ==> charPos = 30
i & mask = 01 & 01 = 01 ==> 1
buf[32] = digits[1] = 1
i >>>= 1 ==> 1 向右移动一位 ==》 0
退出循环
流程总结:
mask 为标记位,每次与目标值相与操作后,得到目标值的最后一位
新建数组存放得到的数据值
将目标值向右移动,左侧补零;再重复上述过程,直到目标值为0