Java中的引用類型參數(shù)傳值
Java中的引用型數(shù)據(jù)包括數(shù)組,對象以及接口。而當參數(shù)是引用類型時,“傳值”則變成了傳遞變量中的“引用”,而不是變量所引起的實體。對于兩個相同類型的引用型變量,如果具有相同的引用,就會用同樣的實體,因
Java中的引用型數(shù)據(jù)包括數(shù)組,對象以及接口。而當參數(shù)是引用類型時,“傳值”則變成了傳遞變量中的“引用”,而不是變量所引起的實體。對于兩個相同類型的引用型變量,如果具有相同的引用,就會用同樣的實體,因此,如果改變參數(shù)變量所引用的實體,就會導致原變量的實體發(fā)生同樣的變化,但是,改變參數(shù)中存放的“引用”不會影響向其傳值的變量中存放的“引用”,反之同樣成立。
引用類型參數(shù)傳值的示例
這里以收音機使用電池為例,介紹“引用類型參數(shù)”的傳值。我們定義了三個類:Battery(電池)、Radio(收音機)和E11(主類)。在主類中,我們創(chuàng)建了一個“收音機”對象和一個“電池”對象,并調用其他兩個類中構造的“方法”來實現(xiàn)程序功能。
代碼示例
下面是示例代碼:
```java
class Battery {
int electricityAmount;
Battery(int amount) {
electricityAmount amount;
}
}
class Radio {
void openRadio(Battery battery) {
battery.electricityAmount battery.electricityAmount - 10;
}
}
public class E11 {
public static void main(String args[]) {
Battery nanfu new Battery(100);
("南孚電池的儲電量是:" nanfu.electricityAmount);
Radio radio new Radio();
("收音機開始使用南孚電池");
(nanfu);
("目前南孚電池的儲電量是:" nanfu.electricityAmount);
}
}
```
在主類中,通過Radio類創(chuàng)建一個“收音機”對象,Battery類創(chuàng)建“電池”對象。當調用`(nanfu)`方法時,我們需要將一個`Battery`對象傳遞給該方法的參數(shù)`battery`,即模擬收音機使用電池。
執(zhí)行上述代碼,輸出結果如下:
```
南孚電池的儲電量是:100
收音機開始使用南孚電池
目前南孚電池的儲電量是:90
```
可以看到,當調用`openRadio`方法時,傳遞的參數(shù)`nanfu`的`electricityAmount`屬性發(fā)生了變化,因為方法內部修改了參數(shù)變量所引用的實體。然而,這并不影響到`nanfu`變量本身所引用的實體。
結論
在Java中,當參數(shù)是引用類型時,傳遞的是變量中的引用,而不是變量所引起的實體。改變參數(shù)變量所引用的實體會影響到原變量的實體,但是改變參數(shù)中存放的“引用”不會影響向其傳值的變量中存放的“引用”。這一點在編寫代碼時需要注意,以免產生意料之外的結果。