任何人都可以解释它背后的逻辑

时间:2014-09-18 08:38:51

标签: java

的输出是什么

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。

2 个答案:

答案 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