可以說我有一個汽車類,我爲這個汽車類創建了一個參考變量。每次我創建一個對象時,新的引用變量?
Car car = new Car()
- 相當直截了當。
我通過調用編輯轎車的特性:car.setColor("Red"), and car.setPrice(2500).
現在,讓我們說,我想創建一個新的Car對象,我必須創建這樣一個新的參考變量:Car car2= new Car();
或可我只是簡單地爲新車使用原始參考變量?
可以說我有一個汽車類,我爲這個汽車類創建了一個參考變量。每次我創建一個對象時,新的引用變量?
Car car = new Car()
- 相當直截了當。
我通過調用編輯轎車的特性:car.setColor("Red"), and car.setPrice(2500).
現在,讓我們說,我想創建一個新的Car對象,我必須創建這樣一個新的參考變量:Car car2= new Car();
或可我只是簡單地爲新車使用原始參考變量?
對象不過是在堆中創建的臨時緩衝區。
每當您創建一個新對象時,堆中都會提供一個新的緩衝區(或空間)。
您當然可以重用您的第一個car
變量,這在某些情況下(例如循環)很常見。請記住,原始變量的引用將被替換,因此除非您在其他位置存儲對該對象的引用(例如在另一個對象的集合或字段中),否則該對象將被垃圾收集。
簡短回答:這取決於你。
長答案:您可以使用任何一種方法。如果您創建一輛新車,您創建的前一輛車不會受到影響,因爲不同的物體是完全獨立的。比方說,
Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
Car car2 = new Car();
car2.setColor("Blue");
car2.setPrice(3000);
現在car1
和car2
有不同的顏色和價格。如果更改car1
的值,則car2
不會受到影響。
或者,你重用car1
:
Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
car1 = new Car(); //You created the new car here
car1.setColor("Blue");
car1.setPrice(3000);
此代碼後,car1
原來的內容丟失*。如果您認爲car1
不再有用,並且可以丟棄其內容,則可以使用此選項。
*注意:car1
的對象仍在內存中。但它是無法訪問的。
擴展在掃地的回答是:
如果我們不是這樣做:
Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
Car car2 = car1;
car2.setColor("Blue");
car2.setPrice(3000);
然後,兩個CAR1和CAR2將有藍色的顏色和3000的價格,因爲他們指指同一個對象。如果我們再重新分配CAR 1:
car1 = new Car();
car1.setColor("Green");
car1.setPrice(0);
CAR 1將有綠色的顏色和0的代價,但CAR2還是會有藍色的顏色和3000的價格,因爲它仍然引用創建原始對象爲car1。
很好的解釋! – Sweeper
你想要什麼?你通過創建一個新的參考變量意味着什麼?你想從舊對象獲取數據嗎?你想讓它們指向相同的實際對象嗎? – SOFe