值传递
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; } }