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

問題1: Javaプログラムの基本構造

以下のコードについて正しい説明を選んでください。

public class Example {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}

選択肢:

  1. このプログラムはエラーが発生する。
  2. プログラムを実行すると "Hello, Java!" が画面に出力される。
  3. main メソッドの引数 String[] args は必須ではない。
  4. System はローカル変数である。

解答と解説

解答: 2

解答解説:

  • 選択肢1: 誤り。このプログラムは構文的にも正しく、エラーは発生しません。
  • 選択肢2: 正解。System.out.println によって "Hello, Java!" が標準出力に表示されます。
  • 選択肢3: 誤り。String[] argsmain メソッドの標準シグネチャであり、エントリーポイントとして必須です。
  • 選択肢4: 誤り。System はJava標準ライブラリのクラスであり、ローカル変数ではありません。

問題2: JVMの特徴

Javaプログラムの実行におけるJVMの役割として適切でないものを選んでください。

選択肢:

  1. JVMはJavaプログラムをコンパイルしてバイトコードに変換する。
  2. JVMはバイトコードを各OSで実行可能な形式に変換する。
  3. JVMによって異なるOS間でJavaプログラムを実行できる。
  4. JVMはWrite once, run anywhereを実現する要素である。

解答と解説

解答: 1

解答解説:

  • 選択肢1: 正解。バイトコードへの変換を行うのは Javaコンパイラ(javac) であり、JVMの役割ではありません。
  • 選択肢2: 正しい。JVMはバイトコードを解釈し、各OSで動作可能な形式に変換します。
  • 選択肢3: 正しい。JVMは異なるOSでJavaプログラムを動作させる基盤を提供します。
  • 選択肢4: 正しい。"Write once, run anywhere" を実現する中心的な役割を果たすのがJVMです。

問題3: オブジェクト指向

以下のコードについて、正しい説明を選びなさい。

public class Employee {
    String name;
    int id;

    public void displayDetails() {
        System.out.println("Name: " + name + ", ID: " + id);
    }
}

選択肢:

  1. Employee クラスはフィールドを持つが、メソッドは持たない。
  2. nameid はローカル変数である。
  3. displayDetails メソッドを呼び出すには Employee クラスのインスタンスが必要である。
  4. displayDetails メソッドは戻り値が必要である。

解答と解説

解答: 3

解答解説:

  • 選択肢1: 誤り。Employee クラスは displayDetails というメソッドを持っています。
  • 選択肢2: 誤り。nameid はクラスのフィールド(メンバ変数)であり、ローカル変数ではありません。
  • 選択肢3: 正解。displayDetails はインスタンスメソッドなので、インスタンスを生成して呼び出す必要があります。
  • 選択肢4: 誤り。このメソッドは戻り値を持たないため、void と宣言されています。

問題4: Javaと他言語の比較

次のうち、C言語とJavaの違いに関する正しい説明はどれですか?

選択肢:

  1. Javaは手続き型プログラミング言語である。
  2. C言語はJVMを使用してプログラムを実行する。
  3. Javaはメモリ管理をガベージコレクションで行う。
  4. C言語はオブジェクト指向プログラミングをサポートする。

解答と解説

解答: 3

解答解説:

  • 選択肢1: 誤り。Javaはオブジェクト指向プログラミング言語であり、手続き型ではありません。
  • 選択肢2: 誤り。C言語はコンパイルされたマシンコードを直接実行し、JVMは使用しません。
  • 選択肢3: 正解。Javaはガベージコレクタによって不要なメモリを自動的に解放します。
  • 選択肢4: 誤り。C言語は手続き型言語であり、オブジェクト指向をサポートしていません。

問題5: エラーの種類

次のJavaプログラムをコンパイルすると発生するエラーの種類は何ですか?

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World")
    }
}

選択肢:

  1. 実行時エラー (Runtime error)
  2. 文法エラー (Syntax error)
  3. 論理エラー (Logic error)
  4. エラーは発生しない。

解答と解説

解答: 2

解答解説:

  • 選択肢1: 誤り。このプログラムはコンパイル段階でエラーになるため、実行時エラーは発生しません。
  • 選択肢2: 正解。このプログラムには文末のセミコロン(;)が欠けており、コンパイル時に文法エラーが検出されます。
  • 選択肢3: 誤り。論理エラーは実行結果が意図したものと異なる場合を指しますが、このプログラムはコンパイルすら通りません。
  • 選択肢4: 誤り。セミコロンが欠如しているためエラーが発生します。