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

Lea*_*ner 1 java

什么是输出

1).

     int j=0;
     for (int i=0; i<100; i++) j=j++;
     System.out.println(j);
Run Code Online (Sandbox Code Playgroud)

我以为j=j++;会等于

 int j2 = j;
    j = j+1;
Run Code Online (Sandbox Code Playgroud)

所以我期待输出将是99.但是当我编译eclipse时输出为0.

2).我无法理解背后的逻辑是什么

  ((int)(char)(byte) -1)
Run Code Online (Sandbox Code Playgroud)

在eclipse上运行它时输出为65535.

Eri*_*ler 5

j=j++;
Run Code Online (Sandbox Code Playgroud)

在功能上等于

int xxx = j;
j++;
j = xxx;
Run Code Online (Sandbox Code Playgroud)

所以价值j保持不变.(因为首先评估右侧,包括增量,然后将结果分配给j)

至于((int)(char)(byte) -1),char的大小为16位且无符号,因此位模式-1为65535.