本文介紹Java中三種不同類型的值傳遞,達到對Java值傳遞的深刻認識
一、參數傳遞的是基本數據類型(8種)
1.問題
public static void main(String[] args) {
int a = 1;
Demo01_ParamTest pt = new Demo01_ParamTest();
//對於原生數據類型來說(8種基本數據類型),參數傳遞的時候是值傳遞,也就是a的一份拷貝
//
pt.changeInt(a);
System.out.println(a);
}
public void changeInt(int a){
a = 3;
}
2.分析
- 當調用
pt.changeInt(a);
,這裏是把main中的a
拷貝了一份傳遞給changeInt(int a)
的a
,注意這是兩個不同的a
,在函數內部的改變,並不會影響main
中a
的值 - 所以最後輸出
1
二 參數傳遞的不是基本數據類型
1.問題
class Point{
int x;
int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
public class Demo02_ParamTest {
public static void main(String[] args) {
Point point = new Point(1, 2);
Demo02_ParamTest pt = new Demo02_ParamTest();
pt.changePoint(point);
System.out.println(point.x);
System.out.println(point.y);
}
public void changePoint(Point point){
point.x = 5;
point.y = 6;
}
}
2.分析
- 所以最後輸出爲
5,6
三、參數傳遞的是String對象
1.問題
public static void main(String[] args) {
String str = "xyz";
Demo03_ParamTest pt = new Demo03_ParamTest();
pt.changeString(str);
System.out.println(str);
}
public void changeString(String str){
str = "abc";
}
2.分析
同樣的分析方法
- 所以最後輸出
"xyz"
四、小結
- Java中的參數傳遞都是值傳遞
- 對於基本數據類型來說值傳遞就是值本身的拷貝
- 對於引用數據類型來說值傳遞就是引用的拷貝