场景:值传递和引用传递是应用在参数传递时
一、值传递:传递的是基本数据类型
在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有着相同的值,但是确实不同的存储单元,因此对形参的改变不会影响实参的值
package com.zejian.test;
/**
* java中的按值调用
* @author zejian
*/
public class CallByValue {
private static int x=10;
public static void updateValue(int value){
value = 3 * value;
}
public static void main(String[] args) {
System.out.println("调用前x的值:"+x);
updateValue(x);
System.out.println("调用后x的值:"+x);
}
}
二、引用传递
传递的是对象(也可以看做是对象的地址),这时形参与实参的对象指向同一块存储单元,因此对形参的修改就会影响实参的值
package com.zejian.test;
/**
* java中的按值调用
* @author zejian
*/
public class CallByValue {
private static User user=null;
public static void updateUser(User student){
student.setName("Lishen");
student.setAge(18);
}
public static void main(String[] args) {
user = new User("zhangsan",26);
System.out.println("调用前user的值:"+user.toString());
updateUser(user);
System.out.println("调用后user的值:"+user.toString());
}
}