由上面的源码可知,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~~
网友评论