这是因为对于java来说参数都是传值引用的,
如果public void Increment (Integer N) {
N = new Integer( N.intValue() + 1);
}
在方法中对外部传入的实参(本例中就是X)是不会有影响的,也就是说X的地址不会因为对N的重新赋值而变化,在方法中只能改变对象的内容。
1. class Example extends Object {
int a;
public Example(int x) {
a=x;
}
public String toString() {
return String.valueOf(a);
}
2. public void Increment (Example N) {
3. N.a+=1;
4. }
public void Increment2(Example N) {
N=new Example(N.a+1);
}
6. public void Result(int x) {
7. Example X = new Example(x);
8. Increment(X);
9. System.out.println("New value is" + X);
10. }
11. }
如果x=30,那么调用Increment(X); 的结果就是31,
而Increment2(X); 就是30;
如果public void Increment (Integer N) {
N = new Integer( N.intValue() + 1);
}
在方法中对外部传入的实参(本例中就是X)是不会有影响的,也就是说X的地址不会因为对N的重新赋值而变化,在方法中只能改变对象的内容。
1. class Example extends Object {
int a;
public Example(int x) {
a=x;
}
public String toString() {
return String.valueOf(a);
}
2. public void Increment (Example N) {
3. N.a+=1;
4. }
public void Increment2(Example N) {
N=new Example(N.a+1);
}
6. public void Result(int x) {
7. Example X = new Example(x);
8. Increment(X);
9. System.out.println("New value is" + X);
10. }
11. }
如果x=30,那么调用Increment(X); 的结果就是31,
而Increment2(X); 就是30;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货