先来看一段代码:
public class Test{
public static void main(String args[]){
int j = 0;
for(int i = 0 ;i < 100;i++){
j = j++;
}
System.out.println(j);
}
}
考虑下输出结果是什么??
输出:
0
没错 输出结果是0 那么看看另一段:
public class Test{
public static void main(String args[]){
int j = 0;
for(int i = 0 ;i < 100;i++){
j = ++j;
}
System.out.println(j);
}
}
输出:
100
这是因为什么呢?
是因为java采用了中间变量缓存机制,执行自增运算的时候,java会生成一个临时变量 如果是i++,则先赋值给临时变量后加1,如果是++i则会先自增1后给临时变量赋值,可以像如下代码这样理解
//i++
int temp = j;
j = j + 1;
j = temp;
j = j + 1;
int temp = j;
j = temp;