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