private void test() {
for (int i = 0; i < 10; i++) {
int a = 0;
int b = a++;
Log.i(TAG, "b = " + b);
}
}
这里输出值都是0,与C不一是致的。C会返回自己增加后的值,java会返回保存的临时变量
因为C++是直接操作的此变量内存,而java就比较高端了,
查阅相关资料,发现java为变量提供了一个临时变量机制。
即先令temp=num=0;
然后执行的是num++;
所以此时num=1;
但是返回值为temp,而并非num.所以返回给num的值是temp=0;
num++伪代码如下:
int temp=num;
num++;
return temp;
即执行了num=num++相当于执行了num=temp=0;所以10次输出均为0。
当你想要实现每次num自加时,直接使用num++而不是num=num++;
java中是把本体的数据递增,返回一个临时变量保存的是原来的值,所以++只使用本体才是对的,直接使用a++这样。