本帖最后由 LoveMyself 于 2015-5-19 02:30 编辑
public class CacheDemo {
public static void main(String[] args) {
Test.method();
}
}
class Test {
public static void method() {
int j = 0;
int num = 0;
for (int i = 0; i < 100; i++) {
j = j++;
num =++num;
}
System.out.println("j=" + j + "\nnum=" + num);
}
}
运行结果:j=0 num=100
分析: 在参与运算时,使用了Java变量缓存机制,在参加自增运算时,Java内部会自动为每一次自增分配一 个临时变量;
下面,为大家详细分析一下自增时的内部运算过程(自增情况同上代码中):
1、j=j++;==》可以拆分为:int temp = 0; j=j+1; j = temp; 根据分析大家可以发现,这里面
的j=j+1;对结果是完全没有影响的,无论循环多少次,结果始终是j的初值即为0;
2、num=++num;==》可以拆分为:num = num +1;int temp =num;num = temp;
跟据解析,大家可以发现作为中间变量的temp的值在不断变化着,所以num值也随之变化,
即为100;
根据以上分析,可以总结为个字:加号在前,先加后赋值;加号在后,先赋值后加。
掌握住这些的话,类似于:(int j =1;)j = j++ + j++ + j++ + ++j; ==>>11和
j =++j + ++j + ++j + j++;==>>13的题就不会再迷惑了吧
|
|