包装类 Integer 源码解析

 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~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容