包装类 Integer 源码解析

2016-09-25  本文已影响0人  steamed_bun
 Integer源码

由上面的源码可知,Integer类继承了Number类并且实现了Comparable接口,故分为三个部分来讲:

一、继承Number类作用;

Number类中只有构造方法和几个抽象方法:

而Integer继承后重写其方法,作用:将Integer值转为对应的类型;

二、实现Comparable接口的作用;

Comparable接口本身就更简单了,只有一个方法:

Integer实现接口后同样需要重写其方法:

三、Integer类自己本身特性

 1、需要注意的是Integer也重写了equals(Object obj) 

故若比较的值类型都是Integer时,equals()和==作用是相同的。

2、还需注意一点是由于Integer类有如下机制:

即当值在-128~127之间时,就会将值放入缓存常量池中,而不是在堆内存中 new 一个新的;

故判断:

output:

具体解释:

①、第一个为true,而第二个为false,就是上面讲的原因;

②、第三个false是因为new关键字是在堆中新建一个对象,与data1的内存地址肯定不同,故使用==肯定为false;

③、第四个true是因为Integer的valueOf()同样使用了上述机制,如下:

3、Integer中的value是final,故Integer是不可变的。

PS:如果有什么问题欢迎指正O(∩_∩)O~~

上一篇 下一篇

猜你喜欢

热点阅读