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