值传递

Java只有值传递!!!而这个值,实际上是对象的引用

 

测试1

public class T {
    public static void main(String[] args) {
        int i = 0;
        T.change(i);
        System.out.println(i);//0

        Student student = new Student();
        System.out.println(student.id);//null
        T.change(student);
        System.out.println(student.id);//1000

    }

    public static void change(Student student){
        student.id = 1000;
    }

    public static void change(int temp){
        temp = 9;
    }

}
class Student{
    Integer id;
}

 

  

 

测试2

public class T {
    public static void main(String[] args) {
        Student a = new Student();
        Student b = new Student();
        a.setName("zhangsan");
        b.setName("lisi");
        System.out.println(a);
        System.out.println(b);
        swap1(a, b);
        System.out.println(a);
        System.out.println(b);
        swap(a, b);
        System.out.println(a);
        System.out.println(b);
    }

    private static void swap1(Student e, Student f) {
        String name = e.getName();
        e.setName(f.getName());
        f.setName(name);
    }

    private static void swap(Student e, Student f) {
        Student a = e;
        e = f;
        f = a;
    }
}

class Student {
    private String name;

    public String getName() {
        return name;
    }

    public Student setName(String name) {
        this.name = name;
        return this;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }
}

测试3

public class T {
    public static void main(String[] args) {
        int c = 10;
        int d = 20;
        Integer e = 10;
        Integer f = 20;
        swap(c, d);
        System.out.println(c);
        System.out.println(d);
        swap(e, f);
        System.out.println(e);
        System.out.println(f);
    }


    private static void swap(int a, int b) {
        int c = a;
        a = b;
        b = c;
    }

    private static void swap(Integer a, Integer b) {
        Integer c = a;
        a = b;
        b = c;
    }
}

 

posted @ 2022-05-31 14:33  禁止摆烂  阅读(24)  评论(0)    收藏  举报