int a = 1;
int b = a++ + a++;
b的值时2还是3?
public class Increaser {
public int value;
public int increase() {
return value++;
}
public int increase(int n) {
return value+=n;
}
}
Increaser i = new Increaser();
i.value = 1;
System.out.println(i.increase());
System.out.println(i.value);
System.out.println(i.increase(s.increase(s.value++)));
System.out.println((i.value));
Output:
1
2
10
10
i++要这样理解:
先把当前的i保存下来,作为parameter,但不立刻执行其传入的expression。此时,执行i = i + 1,然后再执行expression。
对于b = a++ + a++;
首先将a = 1代入第一个a:b = 1 + a++;
注意,此时表达式并不立刻继续执行,而是先执行a = a+ 1。
此时a=2,带入第二个a:b = 1 + 2;
因此结果是3。
return value++;
这会先把value返回,然后立刻执行value = value + 1;
// s.value = 2;
s.increase(s.value++);
如果你在increase函数里面加短点,你会发现进入函数时n = 2,value = 3
也就是说value在++前就被作为parameter传了进来,但是执行时value的值已经是++后的了。