Java の後置インクリメント演算子
後置インクリメント演算子 ( ) は、変数の値を 1 ずつインクリメントする単項演算子です。
次のコード セグメントを考えてみましょう:
<code class="java">int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0</code>
ここで、j の値はループ後も 0 のままです。この動作は一見直感に反しますが、コンパイラによって実行されるステップを調べることで理解できます。
基本的に、ポストインクリメント演算子は、変数をインクリメントする前に変数の元の値を保存します。これは次のコード ブロックに似ています:
<code class="java">int temp = j; j++; j = temp;</code>
対照的に、次のコード セグメントを考えてみましょう:
<code class="java">int a = 0, b = 0; a = b++; System.out.println(a); // prints 0 System.out.println(b); // prints 1</code>
ここで、a には b の元の値 (0) が割り当てられます。そして b がインクリメントされます。この動作は、後置増分演算子を使用した代入では最初に右側を評価し、変数を増分してから元の値を割り当てるというルールに従っています。
同じロジックを前の例に適用すると、次のようになります。 j = j の結果が 0 になる理由を確認してください:
このように、後置インクリメント演算子は予期しない結果を引き起こす可能性があります。正しく理解していないと結果が生じます。式の評価後に変数をインクリメントし、元の値を変数に割り当てることに留意することが重要です。
以上がJava の `j = j ;` が `j` を変更しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。