```class Counter {
int i = 0;
}
public class MyTest {
public void plus(int i) {
i++;
}
public void plus(Counter c) {
c.i++;
}
public void create(Counter c) {
c = new Counter();
c.i++;
}
public static void main(String[] args) {
int i = 0;
MyTest r = new MyTest();
Counter c1 = new Counter(), c2 = new Counter();
r.plus(i);
System.out.print(i);
r.plus(c1);
System.out.print(c1.i);
r.create(c2);
System.out.print(c2.i);
}
}
```
i是0有疑问吗,i传递进函数里面的只是它的值,修改形参不影响实参
c1.i是1,因为执行了plus,++了
c2.i执行的是create,在里面重新new了一个实例,然后新实例的i++,跟c2没关系
提一个点,去了解一下你就明白了:值传递、引用传递。这个问题老生常谈。