子衿沉夜
就是引用对象传参,传到函数里边你在函数里修改它,实参也会变比如数组是引用对象吧void foo(int[] a)有这么一个函数,你在函数体里a[0] = 3;然后其他地方调用fooint[] a = new int[]{1,2,3,4};foo(a);// 到这里结果a[0]就变成3了你例子里的x和harry你可以看作是一个指代,它们两指向同一快内存,在函数里x修改了它指向的地方,也就相当于harry指向的地方被修改了下面->表示指向,比如a->xxx,a指向xxx这块内存a -> Employee(A)b -> Employee(B)传参到swap里a = x -> Employee(A)b = y -> Employee(B)swap结束时b = x -> Employee(B)a = y -> Employee(A)也就是说,swap只是交换x和y的引用,它们两引用的对象被交换了,然后x和y是swap内部的局部变量,函数结束就over了对调用者传入的a和b没有实质上的改变