的输出是什么
1)。
int j=0;
for (int i=0; i<100; i++) j=j++;
System.out.println(j);
我认为j=j++;
将等于
int j2 = j;
j = j+1;
所以我期待输出将是99.但是当我在eclipse上编译时输出为0.
2)。我无法理解
背后的逻辑是什么 ((int)(char)(byte) -1)
在eclipse上运行时,输出为65535。
答案 0 :(得分:5)
j=j++;
在功能上等于
int xxx = j;
j++;
j = xxx;
因此j
的值保持不变。 (因为首先评估右侧,包括增量,然后将结果分配给j
)
对于((int)(char)(byte) -1)
,char的大小为16位且无符号,因此位模式为-1,结果为65535。
答案 1 :(得分:1)
这是因为++的工作原理如下:
a = 0;
a = a++; // a will get the assignment of the current value of a before the increment occurs
所以这里a = 0
然而,在下一个案例中:
a = 0;
a = ++a; // a will get the assignment of the incremented value of a
所以这里a = 1