Integer

Integer

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

猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2363403