我无法通过joshua bloch的"java puzzlers"来制作以下代码的正面或反面.
public class Test22{
public static void main(String args[]){
int j=0;
for(int i=0;i<100;i++){
j=j++;
}
System.out.println(j); //prints 0
int a=0,b=0;
a=b++;
System.out.println(a);
System.out.println(b); //prints 1
}
}
Run Code Online (Sandbox Code Playgroud)
我不能得到j打印0的部分.据作者说,
j=j++
Run Code Online (Sandbox Code Playgroud)
类似于
temp=j;
j=j+1;
j=temp;
Run Code Online (Sandbox Code Playgroud)
但
a=b++
Run Code Online (Sandbox Code Playgroud)
制作b 1.所以它应该像这样评估,
a=b
b=b+1
Run Code Online (Sandbox Code Playgroud)
遵循相同的逻辑,不应该
j=j++
Run Code Online (Sandbox Code Playgroud)
被评估为,
j=j
j=j+1
Run Code Online (Sandbox Code Playgroud)
这里的温度在哪里?任何解释都将非常感激."我对此深有所怀疑.;)>>提前致谢.