Javaコードの実行結果とその解説: if文の条件式について

プログラミング

Javaプログラムの実行結果について疑問を持つことはよくあります。特に、論理演算子や代入演算子を使用した条件式では、期待通りの結果が得られないことがあります。この記事では、質問者が提示したコードを元に、なぜその結果になるのかを解説します。

1. コードの解説

まず、提供されたコードを確認してみましょう。

class test { 
  public static void main(String[] args) { 
    int x = 5; 
    boolean b1 = true; 
    boolean b2 = false; 
    if ((x == 4) && !b2) 
      System.out.print("1"); 
    System.out.print("2"); 
    if ((b2 = true) && b1) 
      System.out.print("3"); 
  } 
}

このコードは、いくつかの重要な要素を含んでいます。

  • if文の条件式における論理演算子(&&)と代入演算子(=)の使用。
  • 変数b2の変更が条件式にどう影響するか。

次に、このコードを実行した結果「2 3」となる理由を詳しく見ていきます。

2. 条件式の評価: 1つ目のif文

1つ目のif文は以下のようになっています。

if ((x == 4) && !b2)

この条件式の左側はx == 4、右側は!b2(b2がfalseなのでtrueになります)。しかし、論理演算子「&&」の性質により、左側の条件がfalseの場合、右側が評価される前にif文は終了します。

結果的に、このif文の条件式はfalseとなり、出力は「1」ではなくスキップされます。

3. 2つ目のif文の動作: 代入演算子の影響

次に、問題となる2つ目のif文を見てみましょう。

if ((b2 = true) && b1)

ここではb2 = trueと代入演算子が使われています。この部分は「b2にtrueを代入する」という意味になります。重要なのは、この代入演算子が結果としてtrueを返すことです。

そのため、代入後、b2はtrueになります。次に、b1(すでにtrue)の値と論理演算子「&&」が評価され、全体の式がtrueとなり、if文の中身が実行されます。結果として「3」が出力されます。

4. まとめ: Javaコードの実行結果とポイント

最終的に、このプログラムの実行結果は「2 3」となります。

  • 1つ目のif文は、左側の条件(x == 4)がfalseのためスキップされ、「1」は表示されません。
  • 2つ目のif文では、代入演算子b2 = trueが評価され、b2がtrueになるため、その条件式はtrueとなり、「3」が表示されます。

このように、代入演算子の使用や論理演算子の動作を理解することが、プログラムの挙動を正確に予測するために重要です。

コメント

タイトルとURLをコピーしました