以下に「演算子」について、Java Bronze試験を想定した問題と解答解説を記載します。


問題1: 算術演算子の優先順位

次のコードを実行した場合、何が出力されますか?

public class Example {
    public static void main(String[] args) {
        System.out.println(1 + 5 % 2);
    }
}

選択肢:

  1. 0
  2. 1
  3. 2
  4. 3

解答と解説

解答: 3

解答解説:

  • 剰余(%)演算子は、足し算(+)より優先順位が高いため、先に計算されます。
  • 5 % 21 となり、次に 1 + 1 を計算して 2 が出力されます。
  • 他の選択肢は、優先順位の誤解や計算ミスによるものです。

問題2: 文字列の結合

次のコードを実行した場合、出力結果を選びなさい。

public class Example {
    public static void main(String[] args) {
        System.out.println("1 + 2 = " + 1 + 2);
    }
}

選択肢:

  1. 1 + 2 = 3
  2. 1 + 2 = 12
  3. 3
  4. コンパイルエラーが発生する

解答と解説

解答: 2

解答解説:

  • 文字列と数値が混在した場合、「+」演算子は左結合のルールに従います。
  • "1 + 2 = " + 1 が最初に計算され、結果は "1 + 2 = 1" となります。その後、+ 2 が結合されて "1 + 2 = 12" となります。
  • 選択肢1: 誤り。括弧を使用しない限り、計算結果は文字列として処理されます。
  • 選択肢3: 誤り。計算結果を直接数値として処理しません。
  • 選択肢4: 誤り。コードに誤りはないためコンパイルエラーは発生しません。

問題3: キャスト演算子

次のコードを実行した場合、出力結果を選びなさい。

public class Example {
    public static void main(String[] args) {
        int i = (int)3.9;
        System.out.println(i);
    }
}

選択肢:

  1. 3
  2. 3.9
  3. コンパイルエラーが発生する
  4. 実行時エラーが発生する

解答と解説

解答: 1

解答解説:

  • キャスト演算子 (int) を使用することで、3.9 の小数点以下が切り捨てられ、整数 3 が出力されます。
  • 選択肢2: 誤り。キャストにより小数部分は切り捨てられるため、3.9 は表示されません。
  • 選択肢3: 誤り。キャストが正しく指定されているためコンパイルエラーは発生しません。
  • 選択肢4: 誤り。実行時エラーは発生しません。

問題4: 剰余演算子

次のコードを実行した場合、出力される値を選びなさい。

public class Example {
    public static void main(String[] args) {
        System.out.println(10 % 3);
    }
}

選択肢:

  1. 1
  2. 3
  3. 10
  4. コンパイルエラーが発生する

解答と解説

解答: 1

解答解説:

  • 剰余(%)演算子は、割り算の余りを計算します。
  • 10 % 3 は、10 を 3 で割った余りである 1 を返します。
  • 選択肢2: 誤り。3 は割り算の商ではなく、余りとして扱われません。
  • 選択肢3: 誤り。10 は剰余演算子の計算結果にはなりません。
  • 選択肢4: 誤り。コードは正しいため、コンパイルエラーは発生しません。

問題5: インクリメントの前置と後置

次のコードを実行した場合、何が出力されますか?

public class Example {
    public static void main(String[] args) {
        int i = 5;
        System.out.println(++i);
        System.out.println(i++);
        System.out.println(i);
    }
}

選択肢:

  1. 5, 5, 6
  2. 6, 6, 7
  3. 6, 5, 6
  4. コンパイルエラーが発生する


解答と解説

解答: 2

解答解説:

  • 1行目: ++i は前置インクリメントのため、i が 1 増加して 6 となり、その値が出力されます。
  • 2行目: i++ は後置インクリメントのため、現在の値 6 が出力された後に i が 1 増加します。
  • 3行目: 最終的に増加した i の値である 7 が出力されます。
  • 選択肢1: 誤り。前置インクリメントの結果が反映されていません。
  • 選択肢3: 誤り。後置インクリメントの影響が反映されていません。
  • 選択肢4: 誤り。コードに誤りはないためコンパイルエラーは発生しません。