情况①:
for (int i = 0; i < 100; i++) { j = 1 + j++; } System.out.println(j);
结果是 0 !! 这是由于在进行后自增/自减(j-- j++)操作的时候,先开辟一块新的内存空间来保存运算之间的 j 值,然后再进行++操作,最后将新的内存空间保存的值赋值给等式的左边。
j = j++ 相当于: temp = j; // 开辟新的内存空间保存原来的 j 值 j = j + 1; // 进行++操作 j = temp; // 将新内存空间保存的值赋值给等式左边
情况②:
int j = 1; int x = j++ + (j+2); // 在第三个+之前 j=1, 在第三个+之后 j=2 即 x = 1 + (2+2); System.out.println(x); // 结果是 5
情况③:
j = 1; j = ++j + j++; // 相当于 j = 2 + j(此时j=2)++; System.out.println(j); // 结果是 4
和情况①相同:
j = 2 + j++ 相等于: temp = j; j = j + 1; j = 2 + temp;
情况④:
int j = 1; j = j++ + ++j + j++ + j++; // j = 1 + 3 + 3 + j(此时j=4)++ System.out.println(j); //结果是11