版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiankongzhichenglyf/article/details/84967833
Java使用按值传递的函数调用方式
1.基本类型
public static void main(String[] args) {
int num = 5;
System.out.println("begin:" + num);
modify(num);
System.out.println("end:" + num);
}
private static void modify(int num) {
num = 10;
System.out.println("modifying:"+num);
}
结果:
begin:5
modifying:10
end:5
2.引用类型
从本质上说,对象的引用是按值传递的。因此可以改变参数对象的内部状态,但对参数对象重新赋值时没有意义的。
public class Student {
private int age;
private String name;
public Student() {
}
public Student(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
Student stu = new Student(1,"jack1");
System.out.println(stu);
stu = new Student(2,"jack2");
System.out.println(stu);
updateStu(stu);
System.out.println(stu);
replaceStu(stu);
System.out.println(stu);
}
private static void updateStu(Student stu){
stu.setAge(3);
stu.setName("jack3");
System.out.println("update:"+stu);
}
private static void replaceStu(Student stu){
stu = new Student(4,"jack4");
System.out.println("replace:"+stu);
}
}
结果:
Student{age=1, name='jack1'}
Student{age=2, name='jack2'}
update:Student{age=3, name='jack3'}
Student{age=3, name='jack3'}
replace:Student{age=4, name='jack4'}
Student{age=3, name='jack3'}