Javaの演算子の優先順位を勉強中に頭が整理出来なくなってしまいました。
下記のコードを実行すると、コメントのように出力されるのですが、
Java
1int i = 0; 2 3System.out.println(i+1); //1 4System.out.println(i++); //0 5System.out.println(i); //1
i+1 のあとに i が加算されずに 2つめのprintlnで 0 と表示されるのが納得いかずに調べたのですが、
iadd は i と 1 の加算結果がオペランドスタックにプッシュされる
iinc は i をローカル変数領域でインクリメントする
ということのようなのですが、JavaVMの命令セットを調べても一括ではとても理解しきれません。
上記コードが理解出来なかった原因が、加算される場所を理解していなかったと考えると、
1.オペランドスタック内でされる処理
2.ローカル変数領域でされる処理
3.クラス変数やインスタンス変数も?
をしっかり理解しないといけない気がするのですが、一覧表みたいなものや、頭の中でうまく整理する方法があれば教えて頂けないでしょうか。