在jdk1.5的環境下,有如下4條語句:
integer i01 = 59;
int i02 = 59;
integer i03 =integer.valueof(59);
integer i04 = new integer(59)。
以下輸出結果為false的是:
a:system.out.println(i01== i02);
b:system.out.println(i01== i03);
c:system.out.println(i03== i04);
d:system.out.println(i02== i04);
integer i01=59的時候,會呼叫
integer
的valueof
方法:
public static integer valueof(int i)
這個方法就是返回乙個 integer 物件,只是在返回之前,看作了乙個判斷,判斷當前 i 的值是否在 [-128,127] 區別,且 integercache 中是否存在此物件,如果存在,則直接返回引用,否則,建立乙個新的物件。
在這裡的話,因為程式初次執行,沒有 59 ,所以,直接建立了乙個新的物件。
int i02=59
,這是乙個基本型別,儲存在棧中。
integer i03 =integer.valueof(59);因為integercache
中已經存在此物件,所以,直接返回引用。
integer i04 =newinteger(59)
;直接建立乙個新的物件。
system.out.println(i01== i02); i01
是integer
物件,i02
是int
,這裡比較的不是位址,而是值。
integer
會自動拆箱成
int,然後進行值的比較。所以,為真。
system. out
.println(i01== i03); 因為 i03 返回的是 i01 的引用,所以,為真。
system. out
.println(i03==i04); 因為 i04 是重新建立的物件,所以 i03,i04 是指向不同的物件,因此比較結果為假。
system. out
.println(i02== i04); 因為 i02 是基本型別,所以此時 i04 會自動拆箱,進行值比較,所以,結果為真。
JAVA怎樣理解物件導向
一 物件的解釋 現實世界中,隨處可見的一種事物就是物件,物件是事物存在的實體,如人類 書桌 計算機 高樓大廈等。人類解決問題的方式總是將複雜的事物簡單化,於是就會思考這些物件都是由哪些部分組成的。通常都會將物件劃分為兩個部分,即動態部分與靜態部分。靜態部分,顧名思義就是不能動的部分,這個部分被稱為 ...
Java筆記 7物件導向的理解
類是對公共屬性和行為的抽取。物件是類的例項化。萬物皆物件。乙個類可以建立無數個物件。比如 貓是乙個類,有出生地點 年齡 尾巴長度 顏色 性格 主人是誰等屬性。那麼小明養的貓 具體到某乙隻 就是乙個物件,它出生再小明家 年齡2歲 尾巴15cm 顏色是白色 性格溫順 主人是小明,這些屬性是確定的。其他同...
我對Java物件導向理解 0000
面向過程,就是典型的c語言這種,乙個main函式,從頭走到腳,中間可能涉及到一些方法的呼叫,但是整個 完全是流水線一樣。這樣就會導致乙個問題,雖然 流程很清晰,但是不容易擴充套件,我需要修改某乙個計算過程,有可能導致全部 需要重寫。而物件導向,就是以一種物件的角度來編寫程式,設計程式,每個物件具有自...