Java 值传递

版权声明:本文为博主原创文章,未经博主允许不得转载。 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'}

猜你喜欢

转载自blog.csdn.net/tiankongzhichenglyf/article/details/84967833