Hello,大家好!我是程序員阿飛!今天呢,女友送了我一套機械鍵盤,很開心。我們主要學習一下Java中最常見的知識點:值傳遞。好了,廢話不多說了,我們直接進入今天的主題。
1、形參與實參
答:形參是指在定義函數名和函數體的時候使用的參數,目的是爲了接受調用該函數時傳入的參數。實參是指在主調函數中調用一個有參函數時,函數名後面括號中的參數。
public static void main(String [ ] args){
Test test = new Test();
test.method("zhutou");//zhutou爲實際參數
}
public void Method(String str){ //str 爲形式參數
System.out.println("Hello World!");
}
2、值傳遞、引用傳遞
答:值傳遞是指在調用函數時將實際參數複製一份傳遞到有參函數中,這樣在函數中對參數進行修改,將不會影響到實際參數。引用傳遞是指在調用函數時將實際參數的地址傳遞到函數中,那麼在函數中對參數進行修改將影響到實際參數。
根本區別:值傳遞會創建副本,引用傳遞不創建副本。
public static void main(String[] args) {
ParamTest pt = new ParamTest();
int i = 10;
pt.pass(i );
System.out.println("print in main , i is " + i);
}
public void pass(int j) {
j = 20;
System.out.println("print in pass , j is " + j);
}
print in pass , j is 20
print in main , i is 10
public static void main(String[] args) {
ParamTest pt = new ParamTest();
User hollis = new User();
hollis.setName("Hollis");
hollis.setGender("Male");
pt.pass(hollis);
System.out.println("print in main , user is " + hollis);
}
public void pass(User user) {
user = new User();
user.setName("hollischuang");
user.setGender("Male");
System.out.println("print in pass , user is " + user);
}
print in pass , user is User{name='hollischuang', gender='Male'}
print in main , user is User{name='Hollis', gender='Male'}
所以,上面的參數其實是值傳遞,把實參對象引用的地址當做值傳遞給了形式參數。
參考地址:https://blog.csdn.net/bjweimengshu/article/details/79799485