java驗證課上程式碼
1.
int value=100;
MyClass obj = new MyClass();
這兩種方式定義的變數是不一樣的,第一種賦值方法直接就給了變數值,同時賦予了他空間,第二種方法沒有賦值,只賦予了他空間。
物件變數如果不引用一個真實的物件,則必須宣告為null
對於原始資料型別的變數(比如int),可以直接使用“==”判斷兩變數值是否相等
是相等的。
2.
物件變數也可以使用“==”判斷兩變數值是否相等嗎?
不是的。。
1 public static void main(String[] args) { 2 Integer i1=100; 3 Integer j1=100;4 System.out.println(i1==j1); 5 Integer i2=129; 6 Integer j2=129; 7 System.out.println(i2==j2); 8 }
當“==”施加於原始資料型別變數時,是比較變數所儲存的資料是否相等
當“==”施加於引用型別變數時,是比較這兩個變數是否引用同一物件。
引用代表地址,所以“==”實際上相當於比較兩個引用型別變數中儲存的物件地址是否相同。
3.
如何比較兩個物件的“內容”是否一樣?
兩個物件的“內容”,其實是指它們在某一時刻的所有欄位的值,“內容相等”,其實是就“對應欄位值”一致。
在Java中要比對兩個物件的欄位值,可以 “重寫(override)”基類的equals()方法
4.
Equals( )方法從哪來?
Object是Java的最頂層基類,其中定義了equals( )方法
5.
請總結一下,這個方法有哪些“與眾不同之處”,你能列出幾條?
該方法稱為類的“構造方法”,有時也習慣稱為“建構函式”
當建立一個物件時,它的構造方法會被自動呼叫。構造方法與類名相同,沒有返回值。
如果類沒有定義建構函式,Java編譯器在編譯時會自動給它提供一個沒有引數的“預設構造方法”。
如果類提供了一個自定義的構造方法,將導致系統不再提供預設構造方法。
6.
如果一個類中既有初始化塊,又有構造方法,同時還設定了欄位的初始值,誰說了算?
1.執行類成員定義時指定的預設值或類的初始化塊,到底執行哪一個要看哪一個“排在前面”。
2.執行類的建構函式。。
類的初始化塊不接收任何的引數,而且只要一建立類的物件,它們就會被執行。因此,適合於封裝那些“物件建立時必須執行的程式碼
7.
Integer類的裝箱和拆箱到底是怎樣實現的?
裝箱過程:當需要一種型別的物件時,這種基本資料型別就自動封裝到與它對應的包裝類中。
拆箱過程:當需要一個數值時,被裝箱的物件中的值就會被自動提取出來,沒有必要再去呼叫intValue()和doubleValue()等方法。
8.
兩對整數明明完全一樣,為何一個輸出true,一個輸出false?