class a{int i = 1;}
public class rf{ public static void main(String argc[]){ rf rf1 = new rf(); rf1.method0(); } void method0 (){ a aa = new a(); aa.i=10; method1(aa); System.out.println(aa.i); }
//传入的是aa的一个copy void method1(a aa){ int i = 100; aa.i = 20; a bb = new a(); //修改了外部aa的一个copy,因而main函数重的aa所指向的对象仍然是调用 //方法method1之前的那一个,所以方法method1中的赋值不改变外部对象的 //指向,但是aa.i仍然改变了另一个对象中i的值. aa = bb; System.out.println(aa.i+" "+i); }
}