class Test{
public static void main(String[] args){
int count=0;
for(int i=0;i<10;i++){
count=count++;
}
System.out.println("count="+count);
}
}
结果是:0
我的分析: (1) int count=0; (2)count=count++, =count++
分析: 首先count在栈中开辟一个空间,初始值为0; 再来看看count=count++;左边的count的值为0, 右边的 count要进行赋值运算.自增运算,由于自增运算符优先级大于赋值运算符,所以先进行自增运算,
count为1,如果你认为再把1赋值给左边的count,那你就只知其一了,内存其实是这样的:
运算过程: 右边的 count会复制一份(count=0)存在栈中的一个临时空间, 然后才进行自增运算count为1值(这count是在栈中的),接着进行赋值运算,把在临时空间的count(记住这个是副本,它的值还是初始值0,并没有被改变),赋值给左边的count,结果count=0;下一个循环也是这样
|