以前学习C的 时候参数传递的方式有两种,一种叫"值传递",值传递传的是一个实体,通俗地说就是传值;另一种叫"引用传递",引用传递传的是指针。
在这里重点讨论以引用的方式传递参数的方式。
在java中只要不是new出来的对象那么就是
MyClass mc = new MyClass(); //在内存中生成MyClass对象
MyClass mc2 = mc; //将mc2指向mc在内存中的对象
上面的mc和cm2是同一个对象。
1. Operator opt = new Operator();
2. MyClass mc = new MyClass();
3. MyClass mc2 = mc;
4. mc.add();
5. System.out.println(mc.i);
6. System.out.println(mc2.i);
7. opt.sub(mc2);
8. System.out.println(mc.i);
9. System.out.println(mc2.i);
Operator opt = new Operator();
MyClass mc = new MyClass();
MyClass mc2 = mc;
mc.add();
System.out.println(mc.i);
System.out.println(mc2.i);
opt.sub(mc2);
System.out.println(mc.i);
System.out.println(mc2.i);
结果:
1. run:
2. 1
3. 1
4. 0
5. 0
6. 成功生成(总时间:0 秒)
run:
1
1
0
0
成功生成(总时间:0 秒)
1. Operator opt = new Operator();
2. MyClass mc = opt.getMyClass();
3. mc.add();
4. System.out.println("add:" + mc.i);
5. add(mc);
6. opt.sub1(mc);
7. System.out.println("sub1:" + mc.i);
8. opt.sub2(mc);//在方法里面对对象进行操作也会对main中的对象有影响,reference调用的结果
9. System.out.println("sub1:" + mc.i);
Operator opt = new Operator();
MyClass mc = opt.getMyClass();
mc.add();
System.out.println("add:" + mc.i);
add(mc);
opt.sub1(mc);
System.out.println("sub1:" + mc.i);
opt.sub2(mc);//在方法里面对对象进行操作也会对main中的对象有影响,reference调用的结果
System.out.println("sub1:" + mc.i);
运行结果:
1. run:
2. add:1
3. sub1:2
4. sub1:-98
5. 成功生成(总时间:0 秒)