物件是如何創建的
行 Vehicle minivan = new Vehicle();宣告一個 Vehicle 類型的物件。
該語句做了兩件事:
聲明一個名為 Vehicle 類別的小型貨車的變數。
建立物件的實體副本並使用 new 運算子為小型貨車分配對其的參考。
new 運算子為物件動態分配記憶體並傳回對該物件的參考。
引用或多或少是new分配的記憶體中物件的位址。
然後將引用儲存在變數中。
在Java中,類別中的所有物件都必須動態分配。
語句的兩個步驟可以重寫以單獨顯示每個步驟。
小型貨車; // 聲明物件的引用。
小型貨車=新車輛(); // 分配一個 Vehicle 物件。
第一行將小型貨車聲明為對 Vehicle 類型的物件的引用。
minivan 是可以引用物件的變量,但不是物件。
目前,小型貨車不引用物件。
下一行建立一個新的 Vehicle 對象,並為小型貨車分配對其的引用。
現在,小型貨車已連結到一個物件。
引用變數與賦值
物件引用變數在賦值運算中的行為與基本型別變數不同。
在原始型別變數中,左邊的變數接收右邊變數值的副本。
在物件引用變數中,左邊的變數與右邊的變數引用同一個物件。
這可能會導致意外結果。
例子:
車輛 car1 = new Vehicle();
車輛car2 = car1;
car1 和 car2 引用同一個物件。
透過 car1 或 car2 所做的更改會影響相同物件。
什麼時候:
car1.mpg = 26;
System.out.println(car1.mpg);
System.out.println(car2.mpg);
會有26號出口。
car1 和 car2 引用同一對象,但不以其他方式連結。
後續 car2 的賦值不會影響 car1。
例子:
車輛 car1 = new Vehicle();
車輛car2 = car1;
車輛 car3 = new Vehicle();
汽車2 = 汽車3;
car2 現在引用與 car3 相同的物件。
car1所引用的物件保持不變。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3