由上面的源碼可知拗引,Integer類繼承了Number類并且實(shí)現(xiàn)了Comparable接口,故分為三個(gè)部分來(lái)講:
一、繼承Number類作用;
Number類中只有構(gòu)造方法和幾個(gè)抽象方法:
而Integer繼承后重寫其方法煮盼,作用:將Integer值轉(zhuǎn)為對(duì)應(yīng)的類型;
二带污、實(shí)現(xiàn)Comparable接口的作用;
Comparable接口本身就更簡(jiǎn)單了香到,只有一個(gè)方法:
Integer實(shí)現(xiàn)接口后同樣需要重寫其方法:
三鱼冀、Integer類自己本身特性
?1、需要注意的是Integer也重寫了equals(Object obj)?
故若比較的值類型都是Integer時(shí)悠就,equals()和==作用是相同的千绪。
2、還需注意一點(diǎn)是由于Integer類有如下機(jī)制:
即當(dāng)值在-128~127之間時(shí)梗脾,就會(huì)將值放入緩存常量池中荸型,而不是在堆內(nèi)存中 new 一個(gè)新的;
故判斷:
output:
具體解釋:
①炸茧、第一個(gè)為true瑞妇,而第二個(gè)為false,就是上面講的原因梭冠;
②辕狰、第三個(gè)false是因?yàn)閚ew關(guān)鍵字是在堆中新建一個(gè)對(duì)象,與data1的內(nèi)存地址肯定不同控漠,故使用==肯定為false蔓倍;
③、第四個(gè)true是因?yàn)镮nteger的valueOf()同樣使用了上述機(jī)制盐捷,如下:
3偶翅、Integer中的value是final,故Integer是不可變的碉渡。
PS:如果有什么問題歡迎指正O(∩_∩)O~~