public class Example{ int i=0; } public class A{ public int i=0; public Example add0(Example e) { e.i++; return e; } public void add1(Example e) { e.i++; } public void modify0(Example e) { Example b=e;//将e行参对象的地址赋给句柄b b.i++;//也同时修改了e.i和实参的值 } public void modify1(Example e) { e=new Example(); e.i++; } public static void main(String[] args) { Example ex=new Example(); A a=new A(); a=a.add0(ex);//等价于a.add0(ex),无需返回值,因为通过传递的对象地址(句柄),直接修改了ex中i的值 a.add1(ex);//add0,add1都在其中的方法体中直接修改了ex.i的值,因此add0的返回值有点多余 a.modify0(ex);//对ex所产生的影响同add1 a.modify1(ex);//对ex没有产生任何影响(而且这就是等价于什么也没有做). |