Java中的值傳遞和引用傳遞

Java數據類型分爲:基本數據類型和引用數據類型

對於基本數據類型

        public static void main(String[] args) {
int a=100;
changeInt(a);
System.out.println(a);
}
public static void changeInt(int a){
a=200;

}

輸出:a=100

分析:基本類型的變量保存原始值,即它代表的值就是數值本身。調用changeInt()等同於內存中創建了一個形參變量,它代表的值和a的值一樣,方法內部操作的是形參變量,對於變量a不會產生影響。

對於引用數據類型:

        public static void main(String[] args) {
HashMap map=new HashMap<String,Object>();
map.put("aa", "11");
changeMap(map);
System.out.println(map.get("aa"));
}
public static void changeMap(HashMap map){
map.put("aa", "22");

}

輸出:22

分析:引用類型它保存的是對象在內存中的地址,類似於:可樂和吸管,引用類型相當於吸管,我們都是通過吸管來獲取可樂的,調用changeMap

方法,相當於在這個可樂上又插入了一根吸管,這兩根吸管指向的是同一杯可樂,所以說方法內部的操作會影響實際對象的值。

對於String,以及Integer、Double等幾個基本類型包裝類,它們都是immutable類型,

因爲沒有提供自身修改的函數,每次操作都是新生成一個對象,所以要特殊對待,可以認爲是和基本數據類型相似,最後的操作不會影響實際對象。

初來乍到,淺談描述,如理解有誤,歡迎指正,貴在共同進步!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章