1. 程式人生 > >Int與Integer

Int與Integer

1.7 height png 地址 基本數據類型 int 之前 對象 自動

技術分享圖片

非new生成的integer變量和new Integer生成的變量比較,結果FALSE,

因為非new生成的Integer變量指向的是java常量池中的對象,而new Integer()生成的變量指向堆中新建的對象,兩者在內存中的地址不同

jdk1.7後,常量池已經轉移到堆裏。

Integer變量和int變量比較時,只要兩個變量的值是向等的,則結果為true

因為包裝類Integer和基本數據類型int比較時,java會自動拆包裝為int,然後進行比較,實際上就變為兩個int變量的比較

例如:

Integer i=0; i是一個對象

int i=3; i是一個基礎變量

Integer i=0;

這種寫法如果沒記錯,在JAVA1.5之前是會報錯的,自動的加解包是1.5的新特性

必須寫成
Integer i= new Integer(0);
i.intValue()才能提取i的值

Int與Integer