解释此代码的输出(当使用连续赋值并更改将在同一语句中使用的变量时)

lan*_*x86 5 java buffer

public class Main{
    public static void main(String[] args){
        int a = 0;
        int[] b = new int[5];
        int c = 3;
        b[a] = a = 3;//a is covered with 3, why the entry assigned with 3 is b[0] instead of b[3]
        System.err.println(b[0]);
        System.err.println(b[3]);
        System.err.println(b[a]);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

3
0
0
Run Code Online (Sandbox Code Playgroud)

我想原因可能是第五个像中间变量缓冲区,但我仍然不太确定该语句是如何b[a] = a = 3;工作的.