【Java SE 11 Silver】問題まとめ

Java
Toshi
Toshi
Javaの勉強を始めて、Java SE 11 Silverの資格を取得しなければいけなくなった人向けにWebで勉強できるように問題と解答この記事にまとめてみました。※解説は含みません

今回解説していく内容は以下です!

本記事の内容

・Java SE 11 Silver 問題集
・Oracle公式 ポイント解説セミナーで理解を深める


Java SE 11 Silver 問題集

Java SE 11 Programmer I
試験番号: 1Z0-815
出題形式: 選択問題
試験時間: 180 分
受験料(税抜): ¥ 37,730
出題数: 80 問
合格ライン: 63 %

Java SE 11 Silver の勉強には、紫本や黒本が用いられます。Javaの基礎的な部分をしっかり勉強したい人は紫本を購入し、紫本で理解を深めた後に黒本の問題を繰り返し解いた方がいいと言われています。

今回この記事にまとめているのは「黒本(問題集)」になります。ぜひ、繰り返し解いてみてください。

簡単なJavaプログラムの作成

1. パッケージに関する説明として、正しいものを選びなさい。(3つ選択)

A. 名前空間を提供する
B. パッケージ名にはドメイン名を逆にしたものを使用しなければならない
C. アクセス制御を提供する
D. クラスの分類を可能にする
E. パッケージに属さないクラスもある
解答

2. 次のうち、パッケージ宣言が正しく記述されているコードを選びなさい。(1つ選択)

A. import java.io *;
      package aaa;
      public class Sample {}
B. package aaa;
      import java.io.*;
      public class Sample {}
C. import java.io.*;
      package aaa {
              public class Sample {}
      }
D. import java.io.*;
      package aaa (
              public class Sample {}
      );

解答

3. 次のうち、インポート宣言をしなくても、自動的にインポートされるものはどれか。正しいものを選びなさい。(2つ選択)

A. java.langパッケージに属するクラス
B. java.langパッケージのうち、StringクラスとSystemクラスの2つだけ
C. 同じパッケージに属するクラス
D. サブパッケージに属するクラス
解答

4. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
        protected int num = 10;
}
package ex4;

public class SampleImpl extends Sample {
      public static void main(String[] args) {
             System.out.println(num);
      }
}

A. 0が表示される
B. 10が表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

5. アプリケーションのエントリーポイントとなるメソッドの条件として、正しいものを選びなさい。(3つ選択)
A. publicであること
B. staticであること
C. 1つのソースファイルに複数記述できること
D. 戻り値型はintであること
E. 引数はString配列型もしくはString型の可変長引数であること
F. 戻り値として0、もしくは1を戻すこと
解答

6. 次のプログラムを以下に示したコマンドで実行したときの結果として、正しいものを選びなさい。(1つ選択)

> java Main java one two
public class Main {
       public static void main(String[] args){
             System.out.println(args[0] + " " + args[1]);
       }
}

A. 「Main java」と表示される
B. 「java one」と表示される
C. 「one two」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

7. 次のうち、Javaのクラスを実行するコマンドとして、正しいものを選びなさい。(2つ選択)

A. javac Test.java
B. java Test
C. java Test.java
D. javac Test
E. javap Test
F. jmod Test.java

解答

8. 以下に示したSampleクラスを実行したときの結果として、正しいものを選びなさい。なお、実行時のコマンドは次のとおりとする。(1つ選択)

> java Sample a ¥” a¥” “a “b c
public class Main {
     public static void main(String[] args){
            System.out.println(args.length);
     }
}

A. 4が表示される
B. 5が表示される
C. 6が表示される
D. 7が表示される
解答

簡単なJavaプログラムの作成(解答)
1. A、C、D
2. B
3. A、C
4. C
5. A、B、E
6. B
7. B、C
8. B

Javaの基本データ型と文字列操作

1. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
          int val = 7;
          bool flg = true;
          if (flg == true) {
              do {
                     System.out.println(val);
              } while (val > 10);
          }
     }
}

A. 7が1回だけ表示される
B. 何も表示されない
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

2.次の式のうち、コンパイルエラーになるものを選びなさい。(1つ選択)

A. int a = 267;
B. int b = 0413;
C. int c = 0x10B;
D. int d = 0b100001011;
E. int e = 0827;

解答

3. 次の式のうち、コンパイルエラーになるものを選びなさい。(5つ選択)

A. int a = 123_456_789;
B. int b = 5________2;
C. int c = _123_456_789;
D. int d = 123_456_789_;
E. float e = 3_.1415F;
F. long f = 999_99_9999_L;
G. byte g = 0b0_1;
H. int h = 0_52;
I. int i = 0x_52;

解答

4. char型の変数の初期化として、正しいものを選びなさい。(1つ選択)

A. char a = "a";
B. char b = 'abc';
C. char c = 89;
D. char d = null;

解答

5. 次の式のうち、コンパイルエラーになるものを選びなさい。(2つ選択)

A. int $a = 100;
B. int b_ = 200;
C. int _0 = 300;
D. int ${d} = 400;
E. int g.a = 700;

解答

6. 次の変数宣言のうち、コンパイルエラーとならないものを選びなさい。(1つ選択)

A. var a;
B. var b = null;
C. var c = () -> {};
D. var d = {1, 2, 3};
E. var e = new ArrayList<>();

解答

7. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
      private var value;
      public Sample(var value) {
           this.value = value;
      }
      public void test() {
           System.out.println(value);
      }
}
public class Main {
     public static void main(String[] args){
         Sample s = new Sample("sample");
         s.test();
     }
}

A. 「sample」と表示される
B. 「null」と表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

8. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class A {
      public void test() {
          System.out.println("A");
      }
}
public class B extends A {
      @Override
      public void test() {
           System.out.println("B");
      }
}
public class C extends A {
      @Override
      public void test() {
            System.out.println("C");
      }
}
public class Main {
     public static void main(String[] args){
           var a = new B();
           a = new C();
           a.test();
     }
}

A. コンパイルエラーが発生する
B. 実行時に例外がスローされる
C. Aが表示される
D. Bが表示される
E. Cが表示される
解答

9. Stringオブジェクトを作成するコードとして、正しいものを選びなさい。(2つ選択)

A. String a = new String("sample");
B. String b = "sample";
C. String c = String.newInstance("sample");
D. String d = String.valueOf('sample');

解答

10. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
         String str = "hoge, world.";
         hello(str);
         System.out.println(str);
      }
      private static void hello(String msg) {
          msg.replaceAll("hoge", "hello");
      }
}

A. 「hoge, world.」と表示される
B. 「hello, world.」と表示される
C. 「hello」と表示される
D. 「hello, helllo.」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

11. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = "abcde";
        System.out.println(str.charAt(5));
     }
}

A. dが表示される
B. eが表示される
C. 何も表示されない
D. nullが表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

12. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = "abcde";
        System.out.println(str.indexOf("abcdef"));
     }
}

A. 0が表示される
B. 1が表示される
C. 4が表示される
D. 5が表示される
E. -1が表示される
F. コンパイルエラーが発生する
G. 実行時に例外がスローされる
解答

13. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = "abcde";
        System.out.println(str.substring(2, 4));
     }
}

A. 「bcd」と表示される
B. 「cde」と表示される
C. 「bc」と表示される
D. 「cd」と表示される
解答

14. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = "aaaa";
        System.out.println(str.replace("aa", "b"));
     }
}

A. 「baa」と表示される
B. 「aab」と表示される
C. 「bb」と表示される
D. 「aba」と表示される
解答

15. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        String str = "abcde";
        System.out.println(str.charAt(str.length()));
    }
}

A. aが表示される
B. eが表示される
C. 5が表示される
D. -1が表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

16. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = "abcde";
        System.out.println(str.substring(1, 3).startsWith("b"));
     }
}

A.「true」と表示される
B.「false」と表示される
C.「bc」と表示される
D. 「abc」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

17. 次のプログラムを実行し、「Hello, Java!」と表示したい。3行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = [                      ] ;
        System.out.println(str);
     }
}
A. "Hello, ".concat("Java!")
B. "Hello, ".append("Java!")
C. "Hello, ".add("Java!")
D. "Hello, ".plus("Java!")

解答

18. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        System.out.println(10 + 20 + "30" + 40);
     }
}

A. 100が表示される
B. 10203040が表示される
C. 303040が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

19. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        String str = null;
        str += "null";
        System.out.println(str);
     }
}

A. 「null」と表示される
B. 「nullnull」と表示される
C. 何も表示されない
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

20. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        StringBuilder sb = new StringBuilder("abcde");
        System.out.println(sb.capacity());
     }
}

A. 0が表示される
B. 5が表示される
C. 16が表示される
D. 21が表示される
解答

21. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        StringBuilder sb = new StringBuilder();
        sb.append("abcde");
        sb.reverse();
        sb.replace(1, 3, "a");
        System.out.println(sb);
     }
}

A. 「aade」と表示される
B. 「ade」と表示される
C. 「aba」と表示される
D. 「eaba」と表示される
解答

22. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        StringBuilder sb = new StringBuilder("abcde");
        System.out.println(sb.indexOf("bcd"));
     }
}

A. 1が表示される
B. 2が表示される
C. 3が表示される
D. 4が表示される
解答

Javaの基本データ型と文字列操作(解答)
1. C
2. E
3. C、D、E、F、I
4. C
5. D、E
6. E
7. C
8. A
9. A、B
10. A
11. F
12. E
13. D
14. C
15. F
16. A
17. A
18. C
19. B
20. D
21. D
22. A

演算子と判定構造

1. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        int a = 3;
        int b = a += 5;
        System.out.println(a + b);
     }
}

A. 8が表示される
B. 10が表示される
C. 16が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

2. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
        int num = -10;
        System.out.println(10 * -num);
     }
}

A. 100が表示される
B. -100が表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

3. 次の式のうち、コンパイルエラーになるものを選びなさい。(3つ選択)

A. byte a = 0b10000000;
B. short b = 128 + 128;
C. int c = 2 * 3L;
D. float d = 10.0;

解答

4. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int a = 10;
      int b = a++ + a + a-- - a-- + ++a;
      System.out.println(b);
  }
}

A. 7が表示される
B. 32が表示される
C. 33が表示される
D. 43が表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

5. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      boolean a = true;
      boolean b = true;
      System.out.println(a <= b);
  }
}

A. trueが表示される
B. falseが表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

6. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int a = 10;
      int b = 10;
      if (10 < a && 10 < ++b) {
         a++;
      }
      System.out.println(a + b);
  }
}

A. 20が表示される
B. 21が表示される
C. 22が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

7. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int a = 100, b = 20, c = 30;
      System.out.println(a % b * c + a / b);
  }
}

A. 5が表示される
B. 35が表示される
C. 90が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

8. 次のプログラムを確認してください。

public class Sample {
    private int num;
    public Sample(int num) {
        this.num = num;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      Sample s1 = new Sample(10);
      Sample s2 = s1;
      s1 = new Sample(10);
      System.out.println(s1 == s2);
  }
}

A. trueが表示される
B. falseが表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

9. 次のプログラムを確認してください。

public class Sample {
    private int num;
    private String name;
    public Sample(int num, String name) {
        this.num = num;
        this.name = name;
    }
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj instanceof Sample) {
            Sample s = (Sample) obj;
            return s.num == this.num;
        }
        return false;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      Object a = new Sample(10, "a");
      Object b = new Sample(10, "b");
      System.out.println(a.equals(b));
  }
}

A. trueが表示される
B. falseが表示される
C. Sampleクラスでコンパイルエラーが発生する
D. Mainクラスでコンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

10. 次のプログラムを確認してください。

public class Sample {
    private int num;
    public Sample(int num) {
        this.num = num;
    }
    public boolean equals(Sample obj) {
        if (obj == null) {
            return false;
        }
        return this.num == obj.num;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      Object a = new Sample(10);
      Object b = new Sample(10);
      System.out.println(a.equals(b));
  }
}

A. Sampleクラスでコンパイルエラーが発生する
B. Mainクラスでコンパイルエラーが発生する
C. 「true」と表示される
D. 「false」と表示される
E. 実行時に例外がスローされる
解答

11. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      Object a = new Object();
      Object b = null;
      System.out.println(a.equals(b));
  }
}

A. trueが表示される
B. falseが表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

12. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
       String a = "sample";
       String b = "sample";
       System.out.print(a == b);
       System.out.print(", ");
       System.out.println(a.equals(b));
  }
}

A. 「false, true」と表示される
B. 「false, false」と表示される
C. 「true, false」と表示される
D. 「true, true」と表示される
解答

13. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
       String a = new String("sample");
       String b = "sample";
       System.out.print(a == b);
       System.out.print(", ");
       System.out.println(a.equals(b));
  }
}

A. 「false, true」と表示される
B. 「false, false」と表示される
C. 「true, false」と表示される
D. 「true, true」と表示される
解答

14. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){

      String a = "abc";
      String b = new String(a);

      int count = 0;
      if (a.intern() == "abc") {
          count++;
      }
      if (b.intern() == "abc") {
          count++;
      }
      if (a.intern() == b.intern()) {
          count++;
      }
      System.out.println(count);
   }
}

A. 0が表示される
B. 1が表示される
C. 2が表示される
D. 3が表示される
解答

15. 次のプログラムを実行し、「ok」と表示したい。4行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int num = 10;
        [                                ]
          System.out.println("ok");
   }
}
A. if (num <= 10)
B. if num <= 10
C. if (num <= 10) then
D. if num <= 10 then

解答

16. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      if (false)
      System.out.println("A");
      System.out.println("B");
   }
}

A. 「A」と表示される
B. 「B」と表示される
C. 「A」「B」と表示される
D. 何も表示されない
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

17. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int num = 10;
      if (num < 10)
          System.out.println("A");
      else
          System.out.println("B");
      if (num == 10)
          System.out.println("C");
   }
}

A. 「A」「B」「C」と表示される
B. 「A」「C」と表示される
C. 「B」「C」と表示される
D. 「A」と表示される
E. 「B」と表示される
F. 「C」と表示される
解答

18. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int num = 10;
      if (num == 100)
          System.out.println("A");
      else if (10 < num)
          System.out.println("B");
      else
      if (num == 10)
          System.out.println("C");
      else
      if (num == 10)
          System.out.println("D");
   }
}

A. Cが表示される
B. Dが表示される
C. CとDが表示される
D. 何も表示されない
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

19. switch文の条件式が戻せる型として、正しいものを選びなさい。(6つ選択)
A. char
B. byte
C. short
D. int
E. long
F. String
G. enum
H. boolean
解答

20. 次のプログラムのコンパイルエラーが発生するのは何行目か。正しいものを選びなさい。(2つ選択)

public class Main {
   public static void main(String[] args){
      final int NUM = 0;
      int num = 10;
      switch (num) {
        case "10":    System.out.println("A");
                      break;
        case num :    System.out.println("B");
                      break;
        case 2 * 5 :  System.out.println("C");
                      break;
        case NUM :    System.out.println("D");
                      break;
      }
   }
}

A. 6行目
B. 8行目
C. 10行目
D. 12行目
解答

21. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
        int num = 1;
        switch (num) {
        case 1:
        case 2:
        case 3: System.out.println("A");
        case 4: System.out.println("B");
        default:
              System.out.println("C");
        }
   }
}

A. 「」と表示される
B. 「」
C. 「」
D. 何も表示されない
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

演算子と判定構造(解答)
1. C
2. A
3. A、C、D
4. B
5. C
6. A
7. A
8. B
9. A
10. D
11. B
12. D
13. A
14. D
15. A
16. B
17. C
18. A
19. A、B、C、D、F、G
20. A、B
21. C

制御構造

1. コンソールに0〜4までの数字を順に表示したい。プログラムの5行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int a = 11;
      int b = 0;
      while ( [                        ] ) {
          if ( 5 < a ) {
              System.out.println(b);
          }
          a --;
          b ++;
      }
   }
}
A. b < 5
B. 5 < b
C. 5 < a
D. a < 5
E. true
F. false

解答

2. コンソールに0〜4までの数字を表示したい。プログラムの空欄①と②に入るコードの組み合わせとして、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      int a = 0;
      [                      ] {
          System.out.println(a++);
      } [                      ]
   }
}
A. ① do ( a < 5 ) ② while;
B. ① do ( 5 < a ) ② while;
C. ① do                ② while ( a < 5 );
D. ① do                ② while ( 5 < a );

解答

3. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
     public static void main(String[] args){
         int a = 0;
         while (a < 5) {
             do
                  a++;
                  System.out.print(a);
             while (true);
         }
     }
}

A. 012が表示される
B. 012が5回表示される
C. 何も表示されない
D. 無限ループになる
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

4. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
   public static void main(String[] args){
      for (int i = 1, long j = 2; i < 5; i++) {
          System.out.print(i * j);
      }
   }
}

A. 「2468」と表示される
B. 「246810」と表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

5. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] args){
      int a = 1;
      for (int b = 2, total = 0; b <= 5; b++) {
          total = a * b;
      }
      System.out.println(total);
  }
}

A. 「2」「3」「4」と表示される
B. 「2」「3」「4」「5」と表示される
C. 「0」と表示される
D. 何も表示されない
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

6. 次のプログラムを実行し、コンソールに「0」と表示したい。3行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] args){
    for (int i = 0; [                      ] ; i++) {
        System.out.println(i);
    }
  }
}
A. i < 0
B. i == 0
C. 0 < i
D. 1 < 2

解答

7. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
      for (int i = 0, j = 0; i < 3, j < 5; i++) {
          System.out.println(i++);
          j += i;
      }
    }
}

A. 「0」「1」「2」と表示される
B. 「0」「2」「4」と表示される
C. 「1」「2」「3」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

8. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        for (int i = 0; i < 3; i++, period()) {
           System.out.print(i);
        }
    }
    private static void period() {
         System.out.print(",");
    }
}

A. 「0,1,2,」と表示される
B. 「,0,1,2」と表示される
C. 「0,1,2」と表示される
D. 「,0,1,2,」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

9. 次のプログラムを実行し、コンソールに「10」表示したい。6行目に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] args){
      int array[][] = new int[][] { { 1, 2 }, { 2, 3, 4} };
      int total = 0;
      for (int i = 0; i < array.length; i++) {
          for ( [                                             ] ){
              total += array[i][j];
          }
      }
      System.out.println(total);
  }
}
A. int j = 0; j < array[i].length; j++
B. int j = 0; j < array[j].length; j++
C. int j = i; j < array[i].length; j++
D. int j = i; j < array[j].length; j++

解答

10. 次のプログラムの3行目の空欄に記述すると無限ループになるコードを選びなさい。(3つ選択)

public class Main {
  public static void main(String[] args){
      for ( [                               ] ) {
            System.out.println(i);
      }
  }
}
A. int i = 0; true; i++
B. int i = 0; false; i++
C. int i = 0; ; i++
D. int i = 0; i < 5;

解答

11. 次のプログラムの4行目の空欄に記述するコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] args){
      String[][] array = { { "A", "B", "C" } };
      for ( [                               ] ) {
          System.out.print(obj);
      }
  }
}
A. Object obj : array
B. String str : array
C. String[] array : array
D. array : Object obj
E. array : String str
F. array : String[] array

解答

12. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] args){
      String[] array = {"A", "B", "C"};
      for (String str : array) {
          str = "D";
      }
      for (String str : array) {
          System.out.print(str);
      }
  }
}

A. 「DDD」と表示する
B. 「ABC」と表示する
C.  コンパイルエラーが発生する
D.  実行時に例外がスローされる
解答

13. 次のコードと同じ結果を出力するコードを選びなさい。(1つ選択)

int num = 10;
do {
    num++;
} while (++num < 10);
System.out.println(num);
A. int num = 10;
      while (++num < 10) {
          num++;
      }
      System.out.println(num);
B. int num = 10;
      while (++num <= 10) {
          num++;
      }
      System.out.println(num);
C. int num = 10;
      while (num++ < 10) {
          num++;
      }
      System.out.println(num);
D.  int num = 10;
      while (num++ <= 10) {
          num++;
      }
      System.out.println(num);

E. 選択肢A〜Dはすべて誤りである
解答

14. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          String[] array = { "A", "B" };
          for (String a : array) {
              for (String b : array){
                  if ("B".equals(b))
                      break;
                  System.out.print(b);
              }
          }
    }
}

A. 「AA」と表示される
B. 「ABAB」と表示される
C. 「A」と表示される
D. 「AB」と表示される
E. 「BB」と表示される
解答

15. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        int[] array = { 1, 2, 3, 4, 5 };
        int total = 0;
        for (int i : array) {
            if (i % 2 == 0)
                continue;
                total += i;
        }
        System.out.println(total);
    }
}

A. 1が表示される
B. 9が表示される
C. 15が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

16.次の中から、ラベルが記述できるものを選びなさい。(1つ選択)
A. if文やswitch文
B. 式
C. 代入
D. return文
E. tryブロック
F. 選択肢A〜Eすべて
解答

17. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        int[] total = 0;
        a: for (int i = 0; i < 5; i++) {
            b : for (int j = 0; j < 5; j++) {
                if (i % 2 == 0) continue a;
                if (3 < j) break b;
                total += j;
            }
        }
        System.out.println(total);
    }
}

A. 6が表示される
B. 12が表示される
C. 20が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

制御構造(解答)
1. A
2. C
3. E
4. C
5. E
6. B
7. D
8. A
9. C
10. A、C、D
11. A
12. B
13. E
14. A
15. B
16. F
17. B

配列の操作

1. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        int[] array = new int[0];
        System.out.println(array);
    }
}

A. 0が表示される
B. nullが表示される
C. 何も表示されない
D. { }が表示される
E. ハッシュコードが表示される
F. コンパイルエラーが発生する
G. 実行時に例外がスローされる
解答

2. 次のプログラムの説明として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        int[] a;
        int b[];
        int[][] c;
        int d[][];
        int[] e[];
        int[][] f[];
    }
}

A. 3行目でコンパイルエラーが発生する
B. 4行目でコンパイルエラーが発生する
C. 5行目でコンパイルエラーが発生する
D. 6行目でコンパイルエラーが発生する
E. 4行目と6行目でコンパイルエラーが発生する
F. 7行目と8行目でコンパイルエラーが発生する
G. コンパイルエラーは発生しない
解答

3.  配列型変数の宣言として、正しいものを選びなさい。(1つ選択)
A. int[3] a;
B. int b[2];
C. int[2] c[];
D. int d[3][];
E. 選択肢A〜Dまで、すべて誤りである
F. 選択肢A〜Dまで、すべて正しい
解答

4. 次の中から、コンパイルエラーになるコードを選びなさい。(3つ選択)

A. int a[] = new int[2][3];
B. int[] b = new int[2.3];
C. int c[] = new int[2 * 3];
D. int x = 2, y = 3;
      int [] d = new int[x * y];
E. int[][] e = new int[2][];
F. int f[][] = new int[][3];

解答

5. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Item {
      String name;
      int price = 100;
}
public class Main {
    public static void main(String[] args){
        Item[] items = new Item[3];
        int total = 0;
        for (int i = 0; i < items.length; i++) {
            total += items[i].price;
        }
        System.out.println(total);
    }
}

A. 0が表示される
B. 200が表示される
C. 300が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

6. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          String[] array = {"A", "B", "C", "D"};
          array[0] = null;
          for (String str : array) {
              System.out.println(str);
          }
    }
}

A. 「ABCD」と表示される
B. 「BCD」と表示される
C. 「nullBCD」と表示される
D. 「null」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

7. 次の中から、コンパイルエラーにならないコードを選びなさい。(3つ選択)

A. int[] a = new int[2]{ 2, 3 };
B. int b[][] = {};
C. int[][] c = new int[][]{};
D. int[] d;
      d = new int[]{2, 3};
E. int e[];
     e = {2,3};

解答

8. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          String[][] array = { { "A", "B" }, null, { "C", "D", "E"} };
          int total = 0;
          for (String[] tmp : array) {
              total += tmp.length;
          }
          System.out.println(total);
    }
}

A. 0が表示される
B. 5が表示される
C. 9が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

9. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public interface A {}
public abstract class B implements A {}
public class C extends B {}
public class D extends C {}
public class Main {
    public static void main(String[] args){
          A[] array = {new C(), null, new D()};
          Object[] objArray = array;
    }
}

A. Mainクラスの3行目でコンパイルエラーが発生する
B. Mainクラスの4行目でコンパイルエラーが発生する
C. 実行時に例外がスローされる
D. コンパイルも実行もできる
解答

10. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          int[][] arrayA = { { 1, 2 }, { 1, 2 }, { 1, 2, 3 } };
          int[][] arrayB = arrayA.clone();
          int total = 0;
          for (int[] tmp : arrayB) {
              for (int val : tmp) {
                  total += val;
              }
          }
          System.out.println(total);
    }
}

A. 0が表示される
B. 12が表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

制御構造(解答)
1. E
2. G
3. E
4. A、B、F
5. E
6. C
7. B、C、D
8. E
9. D
10. B

インスタンスとメソッド

1. 次のプログラムを確認してください。

public class Item {
      private int num = 10;
      public void setNum(int num) {
          this.num = num;
     }
      public int getName() {
          return this.num;
     }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Item a = new Item();
          Item b = new Item();
          b.setNum(20);
          System.out.println(a.getNum());
    }
}

A. 0が表示される
B. 10が表示される
C. 20が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

2. 次のプログラムを確認してください。

public class Item {
      public String name;
      public int price;
      public void printInfo() {
          System.out.println(name + ", " + price);
      }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Item a = new Item();
          Item b = new Item();
          a.name = "apple";
          b.price = 100;
          a.price = 200;
          b.name = "banana";
          a = b;
          a.printInfo();
    }
}

A. 「apple, 100」と表示される
B. 「banana, 100」と表示される
C. 「apple, 200」と表示される
D. 「banana, 200」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

3. 次のプログラムを実行し、「NULL」と表示したい。3行目の空白に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
        [                                   ]
        System.out.println(obj);
    }
}

A. Object obj = null;
B. Object obj = false;
C. Object obj = NULL;
D. Object obj = ” “;
E. 選択肢AとCのどちらも可能である
F. 選択肢A~Eはすべて誤りである
解答

4. 次のプログラムを実行し、7行目が終了したときにガベージコレクションの対象となるインスタンスはどれか。正しい説明を選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Object a = new Object();
          Object b = new Object();
          Object c = a;
          a = null;
          b = null;
          // more code
    }
}

A. 3行目で作成したインスタンスだけが、ガベージコレクションの対象となる
B. 4行目で作成したインスタンスだけが、ガベージコレクションの対象となる
C. 3行目と4行目で作成したインスタンスだけが、ガベージコレクションの対象となる
D. ガベージコレクションの対象となるインスタンスは存在しない
解答

5. 次のプログラムを確認してください。

public class Sample {
      static int num = 0;
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Sample.num = 10;
          Sample s = new Sample();
          Sample s2 = new Sample();
          s.num += 10;
          s2.num += 30;
          System.out.println(Sample.num);
    }
}

A. 10が表示される
B. 20が表示される
C. 30が表示される
D. Mainクラスの3行目でコンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

6. 次の中から、正しい説明を選びなさい。(2つ選択)

A. staticなメソッドからは、staticなメソッドを呼び出せない
B. staticなメソッドからは、staticではないフィールドにアクセスできる
C. staticなメソッドからは、staticではないメソッドを呼び出せる
D. staticなメソッドからは、staticなフィールドにアクセスできる
E. staticではないメソッドからは、staticなフィールドにアクセスできる
F. staticではないメソッドからは、staticなメソッドを呼び出せない
解答

7. 次のクラスのhelloメソッドを呼び出し、コンソールに「hello」と表示したい。

public class Sample {
    public void hello() {
          System.out.println("hello");
    }
}

4行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Sample sample = new Sample();
          [                                    ]
    }
}
A. hello;
B. hello();
C. Sample.hello;
D. Sample.hello();
E. sample.hello();
F. sample.hello;

解答

8. 次のプログラムを確認してください。

public class Sample {
    public int add(Integer a, Integer b) {
          return a + b;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Sample s = new Sample();
          System.out.println(s.add(10));
    }
}

A. 「10」と表示される
B. 「10null」と表示される
C. 「void」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

9. 次のプログラムの5行目に記述できるコードとして、正しいものを選びなさい。(2つ選択)

public class Main {
    public static void main(String[] args){
          int a = 1;
          int b = 2;
          [                         ]
          int c = d;
    }
}
A. System.out.println(a);
B. System.out.println(b + 2);
C. System.out.println(c);
D. System.out.println(d);

解答

10. 次の中から、メソッド宣言の記述として正しいものを選びなさい。(1つ選択)

A. Void sample() { }
B. void sample() { return "sample"; }
C. sample() { }
D. int sample() { return "sample"; }
E. void sample() { }

解答

11. 次のプログラムを確認してください。

public class Sample {
    private String value;
    public void setValue(String value) {
          this.value = value;
    }
    public String getValue() {
          return this.value;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Sample s = new Sample();
          String val = s.setValue("hello");
          s.getValue();
          System.out.println(val);
    }
}

A. Mainクラスの4行目でコンパイルエラーが発生する
B. Mainクラスの5行目でコンパイルエラーが発生する
C. Mainクラスの4行目と5行目でコンパイルエラーが発生する
D. 何も表示されない
E. nullが表示される
F. 実行時に例外がスローされる
解答

12. 次のプログラムを確認してください。

public class Sample {
    float divide(int a, int b) {
          return (float) a / (float) b;
    }
}

このクラスを利用する以下のプログラムの空白に入るコードとして、正しいものを選びなさい。(2つ選択)

public class Main {
    public static void main(String[] args){
        Sample s = new Sample();
        [                ] result s.divide(10, 2);
        System.out.println(result);
    }
}

A. int
B. float
C. double
D. Integer
E. String
F. dim
解答

13. 次のプログラムを確認してください。

public class Sample {
    public int method(int a, int b) {
          return a + b;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Sample s = new Sample();
          int result = s.method(2);
          System.out.println(result);
    }
}

A. 0が表示される
B. 2が表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

14. 次の中から、メソッドの宣言として正しいものを選びなさい。(1つ選択)

A. void method(void) {}
B. void method(int values...) {}
C. void method(int... values, String name) {}
D. void method(int... a, int... b) {}

E. 選択肢CとDの両方とも正しい
F. 選択肢はすべて正しい
G. 選択肢はすべて間違っている
解答

15. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
    public void method(int num) {
          if (num < 0) return;
          System.out.println("A");
          return;
          System.out.println("B");
    }
}

A. 3行目でコンパイルエラーが発生する
B. 5行目でコンパイルエラーが発生する
C. 6行目でコンパイルエラーが発生する
D. 「A」と表示される
E. 「A」「B」と表示される
解答

16. 次のメソッドをオーバーロードしていないメソッド定義を選びなさい。(2つ選択)

int calc(double a, int b) {
      return (int) a + b;
}
A. int calc(int a) {}
B. double calc(double a, int b) {}
C. int calc(double a, double b) {}
D. int calc(double num1, int num2) {}
E. int calc() {}
F. int calc(int a, double b) {}

解答

17. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args){
          Main m = new Main();
          System.out.println(m.calc(2, 3));
    }
    private double calc(double a, int b) {
          return (a + b) / 2;
    }
    private double calc(int a, double b) {
          return (a + b) / 2;
    }
}

A. 4行目でコンパイルエラーが発生する
B. 6行目でコンパイルエラーが発生する
C. 9行目でコンパイルエラーが発生する
D. 選択肢BとCの両方
E. 2.5が表示される
解答

18. 次のメソッドをオーバーロードするメソッド定義として、正しいものを選びなさい。(1つ選択)

void method(){
    // do something
}

A. public void main() {}
B. protected void method() {}
C. private void method() {}
D. 選択肢A~Cまで、すべて正しい
E. 選択肢A~Cまで、すべて誤りである
解答

19. Sampleというクラスを定義しようとしている。このクラスに定義するコンストラクタを修飾できるアクセス修飾子についての説明として、正しいものを選びなさい。(1つ選択)

A. publicなコンストラクタのみ定義できる
B. publicなprotectedなコンストラクタのみ定義できる
C. private以外のコンストラクタが定義できる
D. コンストラクタを修飾するアクセス修飾子に制限はない
E. アクセス修飾子で修飾することはできない
解答

20. 次のプログラムを確認してください。

public class Sample {
    void Sample(){
          System.out.println("hello.");
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
          Sample s = new Sample();
          s.Sample();
    }
}

A. 「hello.」と表示される
B. 「hello.hello.」と表示される
C. Sampleクラスでコンパイルエラーが発生する
D. Mainクラスでコンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

21. 次のプログラムを確認してください。

public class Sample {
    Sample() {
        System.out.println("A");
    }
    {
        System.out.println("B");
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
          Sample s = new Sample();
    }
}

A. 「A」「B」と表示される
B. 「B」「A」と表示される
C. 「A」と表示される
D. 「B」と表示される
E. Sampleクラスでコンパイルエラーが発生する
F. Mainクラスでコンパイルエラーが発生する
G. 実行時に例外がスローされる
解答

22. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
    static int num;
    {
        num = 10;
    }
    public Sample() {
        num = 100;
    }
}
public class Main {
    public static void main(String[] args) {
          System.out.println(Sample.num);
    }
}

A. 0が表示される
B. 10が表示される
C. 100が表示される
D. コンパイルエラーが発生する
解答

23. 次のプログラムを確認してください。

public class Sample {
    void Sample() {
        System.out.println("A");
    }
    Sample(String str) {
      System.out.println(str);
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
          Sample s = new Sample();
    }
}

A. 「」と表示される
B. 「」と表示される
C. 何も表示されない
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

24. 次のプログラムを実行し、コンソールに「ok.」と表示したい。3行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Sample {
    public Sample() {
           [                          ]
    }
    public Sample(String str, int num) {
      System.out.println("ok.");
    }
}
public class Main {
    public static void main(String[] args) {
          Sample s = new Sample();
    }
}
A. Sample(null, 0);
B. this(null, 0);
C. super(null, 0);
D. this.Sample(null, 0);

解答

25. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
    public Sample() {
        System.out.println("A");
        this("B");
    }
    public Sample(String str) {
        System.out.println(str);
    }
}
public class Main {
    public static void main(String[] args) {
          Sample s = new Sample();
    }
}

A. 「A」「B」と表示される
B. 「B」「A」と表示される
C. 「A」と表示される
D. 「B」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

26. 次のプログラムを確認してください。

package ex26;

public class Parent {
    int num = 10;
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

package other;
import ex26.Parent;

public class Child extends Parent {
  public static void main(String[] args) {
      System.out.println(num);
  }
}

A. 0が表示される
B. 10が表示される
C. Childクラスの4行目でコンパイルエラーが発生する
D. Childクラスの6行目でコンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

27. 次のプログラムを確認してください。

package other;

public class Book {
    private String isbn;
    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }
    protected void printInfo() {
        System.out.println(isbn);
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

package ex27;
import other.Book;

public class StoryBook extends Book {}
package ex27;
public class Main {
    public static void main(String[] args) {
        StoryBook story = new StoryBook();
        story.setIsbn("xxx-x-xxxxxx-xx-x");
        story.printInfo();
    }
}

A. 「null」と表示される
B. 「xxx-x-xxxxxx-xx-x」と表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

28. 次のプログラムを確認してください。

public class Sample {
      int num;
      int getNum() { return num; }
      void setNum(int num) { this.num = num; }
}

このクラスにカプセル化を適応したい。次の中から正しいコードを選びなさい。(1つ選択)

A. public class Sample {
             private int num;
             private int getNum() { return num; }
             private void setNum(int num) { this.num = num; }
      }
B. public class Sample {
             public int num;
             public int getNum() { return num; }
             public void setNum(int num) { this.num = num; }
}
C. public class Sample {
             public int num;
             private int getNum() { return num; }
             private void setNum(int num) { this.num = num; }
      }
D. public class Sample {
             private int num;
             public int getNum() { return num; }
             private void setNum(int num) { this.num = num; }
      }

解答

29. 次のプログラムを確認してください。

public class Smple {
      int num;
    public Sample(int num) {
          this.num = num;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        Sample s = new Sample(10);
        modify(s.num);
        System.out.println(s.num);
    }
    private static void modify(Sample s) {
        num *= 2;
    }
}

A. 10が表示される
B. 20が表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

30. 次のプログラムを確認してください。

public class Smple {
      int num;
    public Sample(int num) {
          this.num = num;
    }
}

このクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        Sample s = new Sample(10);
        modify(s);
        System.out.println(s.num);
    }
    private static void modify(Sample s) {
        s.num *= 2;
    }
}

A. 10が表示される
B. 20が表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

インスタンスとメソッド(解答)
1. B
2. B
3. F
4. B
5. C
6. D、E
7. E
8. D
9. A、B
10. E
11. A
12. B、C
13. C
14. G
15. C
16. B、D
17. A
18. E
19. D
20. A
21. B
22. A
23. D
24. B
25. E
26. D
27. C
28. D
29. A
30. B

クラス継承、インタフェース、抽象クラス

1. 次のプログラムを確認してください。

public class Child extends Parent {
    Child() {
          name = "java";
    }
    void hello() {
          System.out.println("hello, " + name);
    }
}

このクラスが継承しているParentクラスの説明として、正しいものを選びなさい。(1つ選択)
A. Parentクラスは、helloメソッドの定義を持っていなければいけない
B. Parentクラスには、フィールドを初期化するためのコンストラクタを定義しなければいけない
C. Parentクラスには、helloフィールドを定義しなければいけない
D. Parentクラスには、nameフィールドを定義しなければいけない
解答

2. 継承の説明として正しいものを選びなさい。(1つ選択)

A. アクセス修飾子がデフォルトのままのフィールドは、すべてのサブクラスのメソッドからアクセスできる
B. アクセス修飾子がprivateなメソッドであっても、サブクラスからは利用できる
C. サブクラスであっても、コンストラクタは引き継がない
D. アクセス修飾子がprotectedなメソッドには、同じパッケージに属するサブクラスのみアクセスできる
解答

3. インタフェースに関する説明として、正しいものを選びなさい。

A. アクセス修飾子を省略しても、publicなメソッドとして扱われる
B. フィールドは一切定義できない
C. クラスは複数のインタフェースを同時に実現できない
D. インタフェースを継承することはできない
E. 抽象クラスは、インタフェースに定義されているメソッドを実現しなくてもよい
解答

4. 次のプログラムの説明として、正しいものを選びなさい。(1つ選択)

public interface A {
    void sample() {
        System.out.println("sample");
    }
}
public class B implements A {

}
public class Main {
    public static void main(String[] args) {
        A a = new B();
        a.sample();
    }
}

A. インターフェイスAのsampleメソッドをdefaultで修飾しなければいけない
B. インターフェイスAのsampleメソッドを削除し、Bクラスにsampleメソッドを追加しなければいけない
C. 実行時に例外がスローされる
D. 「sample」と表示される
解答

5. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public interface A {
   @Override
   default String toString() {
     return "A";
   }
}
public class B implements A {
    @Override
    public String toString() {
      return "B";
    }
}
public class Main {
    public static void main(String[] args) {
        A a = new B();
        System.out.println(a);
    }
}

A. Aインタフェースでコンパイルエラーとなる
B. Bクラスでコンパイルエラーとなる
C. Aが表示される
D. Bが表示される
E. 実行時に例外がスローされる
解答

6. 以下に示すコードをコンパイル、実行し、次のような結果を表示したい。Cクラスの空欄に入るコードとして正しいものを選びなさい。(1つ選択)

Hello
Java
public interface A {
    default void sample() {
        System.out.println("Hello");
    }
}
public interface B extends A {

}
public class C implements B {
    @Override
    public void sample() {
        [                           ]
        System.out.println("Java");
    }
}
public class Main {
    public static void main(String[] args) {
        A a = new C();
        a.sample();
    }
}

A. super.sample();
B. A.super.sample();
C. public.sample();
D. new.sample();
E. 上記のいずれも誤りである
解答

7. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public interface A {
    default void test() {
        System.out.println("A");
    }
}
public interface B {
    default void test() {
        System.out.println("B");
    }
}
public class Main implements A, B {
    public static void main(String[] args) {
        new Main().test();
    }
}

A. Aが表示される
B. Bが表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

8. 抽象クラスに関する説明として、正しいものを選びなさい。(3つ選択)

A. インスタンスを生成することはできない
B. 抽象クラスのメソッドはオーバーライドできない
C. サブクラスから抽象クラスの公開フィールドに自由にアクセスできる
D. 抽象クラスを継承した抽象クラスを定義できる
E. 抽象メソッドは、すべてのサブクラスが実装しなければいけない
解答

9. 次のプログラムを確認してください。

abstract class AbstractSample {
    public void sample() {
          System.out.println("A");
          test();
          System.out.println("C");
    }
    protected abstract void test();
}
class ConcreteSample extends AbstractSample {
    protected void test() {
        System.out.println("B");
    }
}

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
          AbstractSample s = new ConcreteSample();
          s.sample();
    }
}

A. 「A」「B」「C」と表示される
B. 「A」「C」と表示される
C. AbstractSampleクラスでコンパイルエラーが発生する
D. ConcreteSampleクラスでコンパイルエラーが発生する
E. Mainクラスでコンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

10. オーバーライドに関する説明として、正しいものを選びなさい。(1つ選択)
A. 引数リストの定義は、型、数、順番のすべてが同じでなければいけない
B. 戻り値型は同じでなければならない
C. 抽象メソッドはオーバーライドできない
D. オーバーロードされたメソッドはオーバーライドできない
解答

11. 以下のクラスを継承したサブクラスを定義するとき、helloメソッドをオーバーライドしようとしている。サブクラスに定義するhelloメソッドに付けられるアクセス修飾子として、正しいものを選びなさい。(1つ選択)

public class Sample {
    protected void hello() {
        System.out.println("hello.");
    }
}

A. デフォルト(アクセス修飾子なし)
B. private
C. public
D. アクセス修飾子は変えられない
解答

12. 次のプログラムを確認してください。

class A {
    String val = "A";
    void print() {
        System.out.print(val);
    }
}

class B extends A {
    String val = "B";
}

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
          A a = new A();
          A b = new B();
          System.out.print(a.val);
          System.out.print(b.val);
          a.print();
          b.print();
    }
}

A. 「ABAB」と表示される
B. 「AAAA」と表示される
C. 「AAAB」と表示される
D. Bクラスでコンパイルエラーが発生する
E. Mainクラスでコンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

13. 次のプログラムを確認してください。

interface Worker {
       void work();
}

class Employee {
    public void work() {
        System.out.println("work");
    }
}
class Engineer extends Employee implements Worker { }

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        Worker worker = new Engineer();
        worker.work();
    }
}

A. Enginnerクラスでコンパイルエラーが発生する
B. Mainクラスでコンパイルエラーが発生する
C. 「work」と表示される
D. 実行時に例外がスローされる
解答

14. 次のプログラムを確認し、これらのクラスやインタフェースを利用するMainクラスをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public interface Worker {
        void work();
}
class Employee implements Worker {
    public void work() {
        System.out.println("work");
    }
    public void report() {
        System.out.println("report");
    }
}
class Engineer extends Employee {
    public void create() {
        System.out.println("create future");
    }
}
public class Main {
    public static void main(String[] args) {
          Works a = new Engineer();
          Employee b = new Engineer();
          Engineer c = new Engineer();
          a.create();
          b.work();
          v.report();
    }
}

A. Mainクラスの6行目でコンパイルエラーが発生する
B. Mainクラスの7行目でコンパイルエラーが発生する
C. Mainクラスの8行目でコンパイルエラーが発生する
D. 選択肢AとBの両方
E. 選択肢BとCの両方
解答

15. 次のプログラムを確認してください。

public interface A { }
public class B implements A { }
public class C extends B { }
public class D { }

これらのクラスやインタフェースを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        A[] array = {
               new B(),
               new C(),
               new A(),
               new D()
        };
    }
}

A. 4行目でコンパイルエラーが発生する
B. 5行目でコンパイルエラーが発生する
C. 6行目でコンパイルエラーが発生する
D. 7行目でコンパイルエラーが発生する
E. 選択肢AとBの両方
F. 選択肢CとDの両方
G. 選択肢BとCの両方
H. 正常に動作する
解答

16. 次のプログラムを確認してください。

class A { }
class B extends A {
    void hello() {
        System.out.println("hello");
    }
}

これらのクラスを利用する以下のプログラムを実行し、「hello」とコンソールに表示したい。4行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        A a = new B();
        [                               ]
        b.hello();
    }
}

A. A b = a;
B. A b = mew B();
C. A b = (A) a;
D. B b = a;
E. B b = (A) a;
F. B b = (B) a;
解答

17. 次のプログラムを確認してください。

class A {
    void hello() {
        System.out.println("A");
    }
}
class B extends A {
    void hello() {
        System.out.println("B");
    }
}

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        A a = new A();
        B b = (B) a;
        b.hello();
    }
}

A. Aが表示される
B. Bが表示される
C. Mainクラスでコンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

18. 次のプログラムを確認してください。コンソールに「10」と表示するために、Sampleクラスの4行目の空欄に入るコードとして正しいものを選びなさい。(2つ選択)

class Sample {
    private int num;
    public Sample(int num) {
           [                             ]
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
}
public class Main {
    public static void main(String[] args) {
        Sample s = new Sample(10);
        System.out.println(s.getName());
    }
}
A. this.num = num;
B. this.-> num = num;
C. num = num;
D. setNum(num);
E. super.setNum(num);

解答

19. 次のプログラムを確認してください。

class Parent {
    String name;
    String getName() {
        return this.name;
    }
}
public class Child extends Parent {
    String name;
}

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.name = "sample";
        System.out.println(child.getName());
    }
}

A. 「sample」と表示される
B. 「null」と表示される
C. 何も表示されない
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

20. 次のプログラムを確認してください。

class A {
    public A() {
        System.out.println("A");
    }
}
class B extends A {
    public B() {
        System.out.println("B");
    }
}

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        A a = new B();
    }
}

A. 「A」と表示される
B. 「B」と表示される
C. 「A」「B」と表示される
D. 「B」「A」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

21. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

class Parent {
    public Parent() {
        System.outptintln("A");
    }
    public Parent(String val) {
        this();
        System.outptintln(val);
    }
}
class Child extends Parent {
      public Child() {
          super("B");
          System.out.println("C");
    }
    public Child(String val) {
          this();
          System.out.println(val);
    }
}
public class Main {
      public static void main(String[] args) {
          new Child("D");
    }
}

A. 「A」「B」「C」「D」と表示される
B. 「A」「B」と表示される
C. 「B」「A」「D」「C」と表示される
D. 「A」「B」「D」「C」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

クラス継承、インタフェース、抽象クラス(解答)
1. D
2. C
3. A、E
4. A
5. A
6. E
7. C
8. A、C、D
9. A
10. A
11. C
12. B
13. C
14. A
15. F
16. F
17. D
18. A、D
19. B
20. C
21. A

関数型インタフェース、ラムダ式

1. 次のプログラムを確認し、Mainクラスの空欄に入るコードとして、正しいものを選びなさい。(2つ選択)

interface Algorithm {
        void perform(String name);
}
class Service {
    private Algorithm  logic;
    public void setLogic(Algorithm logic) {
        this.logic = logic;
    }
    public void doProcess(String name) {
        System.out.println("start");
        this.logic.perform(name);
        System.out.println("end");
    }
}
public class Main {
    public static void main(String[] args) {
        Algorithm algorithm = [                    ] -> {
              System.out.println("hello, " + name);
        };
        Service s = new Service();
        s.setLogic(algorithm);
        s.doProcess("Lambda");
    }
}

A. ()
B. (name)
C. (String)
D. (String name)
解答

2. 次のプログラムの「// insert code here」に入るコードとして、誤っているものを選びなさい。(2つ選択)

public class Main {
    public static void main(String[] args) {
        // insert code here
        System.out.println(f.test("Lambda"));
  }
  private static interface Function {
        String test(String name);
  }
}
A. Function f = (name) -> {
            return "hello, " + name;
      };
B. Function f = (name) -> {
            "hello, " + name;
      };
C. Function f = (name) -> return "hello, " + name;
D. Function f = (name) -> "hello, " + name;
E. Function f = name -> {
            return "hello, " + name;
     };

解答

3. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        String val = "A";
        Function f = (val) -> {
            System.out.println(val);
        };
        f.test("B");
  }
}
interface Function {
    void test(String val);
}

A. Aが表示される
B. Bが表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

4. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] args) {
        int cnt = 0;
        Runnable r = () -> {
            for (cnt = 0; cnt < 10; cnt++) {
                System.out.println(cnt++);
            }
        };
        new Thread(r).start();
  }
}

A. 0123456789が表示される
B. 02468が表示される
C. 13579が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

5. 次のプログラムを実行し、「ok」と表示したい。11行目の空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

import java.util.Arrays;
import java.util.List;
import java.util.function.*;

public class Main {
    public static void main(String[] args) {
        List list = Arrays.asList(
                            new Sample(10),
                            new Sample(20),
                            new Sample(30));
    [                       ]
    if (x.test(new Sample(20))) {
        System.out.println("ok");
    }
  }
}
class Sample {
    private int num;
    public Sample(int num) {
        this.num = num;
    }
    public boolean equals(Object obj) {
        if (obj instanceof Sample == false) {
            return false;
        }
        if (this.num == ((Sample) obj).num) {
            return true;
        }
        return false;
    }
}
A. Predicate<Sample> x = s -> list.contains(s);
B. Supplier<Sample> x = s -> list.contains(s);
C. Consumer<Sample> x = s -> list.contains(s);
D. Function<Sample> x = s -> list.contains(s);

解答

6. java.util.functionパッケージに属する関数型インタフェースで、引数を受け取らず、結果を戻すためのものを選びなさい。(1つ選択)
A. Cosumer
B. Function
C. Supplier
D. Predicate
解答

7. 次のプログラムの空欄に入るコードとして、正しいものを選びなさい。(1つ選択)

import java.util.function.*;

public class Main {
    public static void main(String[] args) {
        [                      ] <String, Integer> func = (str) -> {
            return Integer.parseInt(str);
        };
        System.out.println(func.apply("100") * 2);
    }
}

A. Cosumer
B. Function
C. Supplier
D. Predicate
解答

8. java.util.function.Consumerの説明として、正しいものを選びなさい。(1つ選択)
A. 引数を受け取り、その値を使って処理だけ行い、結果は戻さない
B. 引数を受け取らずに、結果だけ戻す
C. 引数を受け取り判定を行う
D. 引数を受け取り、それを使って何らかの処理をし、その処理結果を戻す
解答
関数型インタフェース、ラムダ式(解答)
1. B、D
2. B、C
3. C
4. D
5. A
6. C
7. B
8. A

API

1. 次の計算式を使い、毎年積立を行って複利運用をしたときの金額を計算したい。この計算を行うコードとして正しいものを選びなさい。(1つ選択)

A. n = (int) (m * (Math.pow((1 + r), x) -1) / r);
B. n = (int) (m * (Math.pow(x, (1 + r)) -1) / r);
C. n = (int) (m * (Math.sqrt((1 + r) -1) / r)
D. n = (int) (m * (Math.sqrt((1 + r), x) -1) / r)

解答

2. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
    private int id;
    private String name;
    public Sample(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public int getId() {
        retrun id;
    }
    public String getName() {
        retrun name;
  }
}
import java.util.Comparator;

public class SampleComparator implements Comparator {
  @Override
  public int compare(Sample s1, Sample s2) {
    if (s1.getId() < s2.getId()) {
        return 1;
    }
    if (s2.getId() < s1.getId()) {
        return -1;
    }
    return 0;
  }
}
import java.util.ArrayList;
import java.util.Array;
import java.util.List;

public class Main {
    public static vaoid main(String[] args) {
        Sample[] samples = {
            new Sample(2, "B"),
            new Sample(3, "C"),
            new Sample(1, "A")
        };
        List list = new ArrayList(Arrays.asList(samples));
        list.sort(new SampleComparator());
        for (Sample s : list) {
            System.out.printLn(s.getName());
        }
    }
}

A. 「A」「B」「C」と表示される
B. 「B」「C」「A」と表示される
C. 「C」「B」「A」と表示される
D. 何も表示されない
解答

3. 次のプログラムを実行し、「3」「2」「1」と表示したい。空欄に入るコードとして正しものを選びなさい。(1つ選択)

import java.util.Arrays;
import java.util.List;

public class Sample {
    public static void main (String[] args) {
        List list = Arrays.asList(new Integer[] {1, 2, 3});
        [                 ]
        for (Integer num : list) {
            System.out.println(num);
        }
    }
}
A. list.sort((a, b) -> a.compareTo(b));
B. list.sort(() -> a.compareTo(b));
C. list.sort((a) -> a.compareTo(b));
D. list.sort((a, b) -> a.compareTo(b));

解答

4. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Sample {
    public static void main (String[] args) {
        char a = '0';
        int num = 0;
        if (Character.isAlphabetic(a)) {
            num++;
        }
        if (Character.isDigit(a)) {
            num++;
        }
        if (Character.isLowerCase(a)) {
            num++;
        }
        System.out.println(num);
    }
}

A. 0が表示される
B. 1が表示される
C. 2が表示される
D. 3が表示される
E. コンパイルエラーが発生する
解答

5. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.time.LocalDate;

public class Sample {
    public static void main (String[] args) {
        LocalDate a = LocalDate.of(2015, 0, 1);
        LocalDate b = LocalDate.parse("2015-01-01");
        System.out.pritntLn(a.equals(b));
    }
}

A. trueが表示される
B. falseが表示される
C. 5行目でコンパイルエラーが発生する
D. 6行目でコンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

6. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。なお、現在の日付を2019年8月20日とする。(1つ選択)

import java.time.DayOfWeek;
import java.time.LocalDate;

public class Sample {
    public static void main (String[] args) {
        LocalDate a = LocalDate.of(2019,8,19);
        LocalDate b = LocalDate.new();
        b.with(DayOfWeek.MONDAY);
        System.out.println(a.equalse(b)
                + ", " + a.isBefore(b));
    }
}

A. 「true, true」と表示する
B. 「false, false」と表示する
C. 「true, false」と表示する
D. 「false, true」と表示する
解答

7. 次のうち、ArrayListの説明として正しいものを選びなさい。(3つ選択)
A. nullは扱えない
B. 動的な配列として動作する
C. 重複した値は扱えない
D. スレッドセーフではない
E. 値を追加する箇所を制御できる
解答

8. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.utill.ArrayList;

public class Main {
    public static void main (String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("A");
        list.add(10);
        list.add('B');
        for (String str : list) {
            System.out.print(obj);
        }
    }
}

A. 5行目でコンパイルエラーが発生する
B. 6行目でコンパイルエラーが発生する
C. 7行目でコンパイルエラーが発生する
D. 8行目でコンパイルエラーが発生する
E. 9行目でコンパイルエラーが発生する
F. 「A10B」と表示される
G. 実行時に例外がスローされる
解答

9. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.utill.ArrayList;

public class Main {
    public static void main (String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("A");
        list.add(2, "B");
        list.add("C");
        list.add("D");
        for (String str : list) {
            System.out.print(str);
        }
    }
}

A. 「ABCD」と表示される
B. 「ACBD」と表示される
C. 「ACDB」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

10. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.utill.ArrayList;

public class Main {
    public static void main (String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("A");
        list.set(0, "B");
        list.add("C");
        list.set(1, "D");
        for (String str : list) {
            System.out.print(str);
        }
    }
}

A. 「BD」と表示される
B. 「AD」と表示される
C. 「BC」と表示される
D. 「BCD」と表示される
E. 「ABCD」と表示される
F. コンパイルエラーが発生する
G. 実行時に例外がスローされる
解答

11. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Item {
    private String name;
    private int price;
    public Item(String name, int price) {
        this.name = name;
        this.price = price;
    }
    public boolean equals(Object obj) {
        if (obj instanceof Item) {
            Item tmp = (Item) obj;
            If (tmp.name.equals(this.name)) {
                return true;
            }
        }
        retrun false;
    }
    public String getName() {
        rerun name;
    }
}
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add(new Item("A", 100));
        list.add(new Item("B", 200));
        list.add(new Item("C", 300));
        list.add(new Item("A", 100));
        list.remove(new Item("A", 500));
        for (Item item : list) {
              System.out.pritln(item.getName());
        }
    }
}

A. 「A」「B」「C」「A」と表示される
B. 「B」「C」「A」と表示される
C. 「B」「C」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

12. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        for (String str : list) {
            if ("B".equals(str)) {
                list.remove(str);
            } else {
                System.out.println(str);
        }
    }
}

A. 「A」「C」と表示される
B. 「A」「B」「C」と表示される
C. 「A」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

13. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");
        for (String str : list) {
            if ("C".equals(str)) {
                list.remove(str);
            }
        }
        for (String str : list) {
            System.out.println(str);
        }
    }
}

A. 「A」「B」「D」「E」と表示される
B. 「A」「B」「C」「D」「E」と表示される
C. 「A」「B」「E」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

14. 次のうち、値を変更できない固定長のリストを作るものを選びなさい。(2つ選択)

A. var List = List.of(1,2,3);
B. var List = new ArrayList();
C. var List = Arrays.asList(new Integer[] {1,2,3});
D. var List = new ArrayList(3);

解答

15. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] a = {"b", "c"};
        String[] b = {"a", "b", "c"};
        System.out.printLn(Arrays.compare(a, b));
    }
}

A. trueが表示される
B. falseが表示される
C. 1が表示される
D. 0が表示される
E. -1が表示される
解答

16. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] a = {"B", "A"};
        String[] b = {"B", "A"};
        System.out.printLn(Arrays.compare(a, b));
    }
}

A. trueが表示される
B. falseが表示される
C. 1が表示される
D. 0が表示される
E. -1が表示される
解答

17. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.utill.AarryList;
import java.utill.Aarrys;
import java.utill.List;

public class Main {
    public static void main(String[] args) {
        List list = new AarryList<>(
                Arrays.asList(new String[]{"A", "B", "C"})
        );
        List.removeIf(
                (String s) -> {
                      return s.equals("B");
                }
        );
        System.out.println(list);
    }
}

A. [A, B, C]
B. [A, C]
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

18. 次のプログラムの実行結果として「A」「B」「C」と順に表示したい。以下の空欄に入るコードとして正しいものを選びなさい。(2つ選択)

import java.utill.List;

public class Main {
    public static void main(String[] args) {
        List List = List.of("A", "B", "C");
        [           ]
    }
}
A. list.forEach(str -> System.out.println(str));
B. list.for(str -> System.out.println(str));
C. list.forEach(System.out::println);
D. list.forEach(System.out::println());
E. list.for(System.out::println);

解答

19. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

piblic class Item {
    private int id;
    private String name;
    public Item(int id, String name) {
        this.id = id;
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
}
import java.util.HashMap;
import java.util.Map;

public class Sample {
    public static void main (String[] args) {
        Map<Integer, Item> map = new HashMap<Integer, Item>();
        map.put(1, new Item(1, "A"));
        map.put(1, new Item(2, "B"));
        map.put(1, new Item(3, "C"));
        map.put(1, new Item(1, "A"));
        map.put(null, new Item(0, "default"));

        System.out.printLn(map.size());
    }
} 

A. 3が表示される
B. 4が表示される
C. 5が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

API(解答)
1. A
2. C
3. D
4. B
5. E
6. D
7. B、D、E
8. F
9. E
10. A
11. B
12. C
13. E
14. A、C
15. D
16. C
17. B
18. A、C
19. B

例外処理

1. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
      try {
           int[] array = {};
           array[0] = 10;
           System.out.println("finish");
      } catch (ArrayIndexOutOfBoundsException e) {
           System.out.println("error");
      }
  }
}

A.「finish」と表示される
B.「error」と表示される
C.「finish」「error」と表示される
D. 「error」「finish」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

2. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。なお、実行時には起動パラメータを何も渡さないこととする。(1つ選択)

public class Main {
  public static void main(String[] ages) {
      try {
           if (args.length == 0) { 
               System.out.println("A");
           }
      } catch (NullPointerException e) {
           System.out.println("B");
      } finally {
           System.out.println("C");
      }
  }
}

A. 「A」「B」「C」と表示される
B. 「A」「C」と表示される
C. 「B」「C」と表示される
D. 「A」「B」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

3. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class SampleException extends Exception {}
public class SubSampleException extends SampleException {}
public class Main {
  public static void main(String[] ages) {
      try {
           sample();
           sub();
      } catch (SampleException e) {
           System.out.println("A");
      } catch (SubSampleException e) {
           System.out.println("B");
      }
  }

  private static void sample() throws SampleException {
      throws new SampleException();
  }

  private static void sub() throws SubSampleException {
      throws new SubSampleException();
}

}

A. 「A」と表示される
B. 「B」と表示される
C. 「B」「A」と表示される
D. 何も表示されない
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

4. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
      try {
           Object obj = null;
           System.out.println(obj.toString());
           System.out.println("A");
        } finally {
           System.out.println("B");
        } catch (NullPointException e) {
           System.out.println("C");
        }
  }
}

A. 「B」「C」と表示される
B. 「C」「B」と表示される
C. 「A」「C」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

5. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
        System.out.println(test(null));
  }
  private static String test(Object obj) {
      try {
           System.out.println(obj.toString());
        } catch (NullPointException e) {
           return "A";
        } finally {
           System.out.println("B");
        }
        return "C";
  }
}

A. 「A」と表示される
B. 「A」「B」と表示される
C. 「B」「A」と表示される
D. 「C」と表示される
E. コンパイルエラーが発生する
F. 実行時に例外がスローされる
解答

6. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
      int result = sample();
      System.out.println(result);
  }
  private static int sample() {
      try {
           throw new RuntimeException();
        } catch (RuntimeException e) {
           return 10;
        } finally {
           return 20;
        }
  }
}

A. 10が表示される
B. 20が表示される
C. 30が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

7. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
      int result = sample();
      System.out.println(result);
  }
  private static int sample() {
      int val = 0;
      try {
           String[] array = {"A","B","C"};
           System.out.println(array[3]);
        } catch (RuntimeException e) {
           val = 10;
           return val;
        } finally {
           val += 10;
        }
        return val;
  }
}

A. 0が表示される
B. 10が表示される
C. 20が表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

8. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
    try {
           System.out.println("A");
    } finally {
           System.out.println("B");
    } finally {
           System.out.println("C");
    }
  }
}

A. 「A」「B」「C」と表示される
B. 「A」「B」と表示される
C. 「A」「C」と表示される
D. コンパイルエラーが発生する
E. 実行時に例外がスローされる
解答

9. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
  public static void main(String[] ages) {
    try {
      try {
           String[] array = {"A","B","C"};
           System.out.println(array[3]);
      } catch (ArrayIndexOutOfBoundsException e) {
           System.out.println("D");
      } finally {
           System.out.println("E");
      }
    } catch (ArrayIndexOutOfBoundsException e) {
         System.out.println("F");
    } finally {
         System.out.println("G");
    }
  }
}

A.「C」「E」「G」と表示される
B.「D」「E」「G」と表示される
C.「E」「F」「G」と表示される
D.「D」「E」と表示される
E.「F」「G」と表示される
F.コンパイルエラーが発生する
G.実行時に例外がスローされる
解答

10. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Sample {
  public static void main(String[] ages) {
    try(FileInputStream is = new FileInputStream("sample.txt")) {
            throw new FileNotFoundException();
    } catch (Exception e) {
            System.out.println("A");
    } finally{
        if (is != null) {
            is.close();
        }
            System.out.println("B");
    }
  }
}

A. 「A」と表示される
B. 「B」と表示される
C. 「A」「B」と表示される
D. 「B」「A」と表示される
E. コンパイルエラーが発生する
解答

11. 次のSampleクラスの2行目の空欄に入るコードとして、正しいものを選びなさい。(2つ選択)

public class SampleException extends Exception {}
public class TestException extends RuntimeException {}
public class Smple {
  public void hello(String name)  [                       ] {
    if (name == null) {
          throw new SampleException();
    }
    if ("".equals()) {
          throw new TestException();
    }
    // do something
  }
}

A. throws SampleException, TestException
B. throws SampleException; TestException
C. throws TestException
D. throws SampleException
E. 何も記述しなくてもよい
解答

12. エラーに関する説明として、誤っているものを選びなさい。(1つ選択)

A. エラーは、プログラムの実行環境に例外が発生されたときにスローされる
B. エラーは、Errorクラスを継承しなければいけない
C. エラーはthrows句に宣言する必要はない
D. エラーは例外処理を記述できない
解答

13. 次のプログラムを確認してください。

public class Main {
  public static void main (String[] ages) {
      System.out.println(args[0].length());
  }
}

このプログラムを次のコマンドで実行したときの結果として、正しいものを選びなさい。(1つ選択)

> java Main

A. 「null」と表示される
B. 「0」と表示される
C. ArrayIndexOutOfBoundsExceptionが発生する
D. NullPointExceptionが発生する
解答

14. 次のプログラムをコンパイル、実行したときに発生する例外の種類として、正しいものを選びなさい。(1つ選択)

import java.util.ArrayList;
import java.util.List;

public class Main {
  public static void main (String[] ages) {
      List list = new ArrayList<>();
      list.get(0);
  }
}

A. IndexOutOfBoundsException
B. ArrayIndexOutOfBoundsException
C. StringIndexOutOfBoundsException
D. ListIndexOutOfBoundsException
解答

15. 次のプログラムを確認してください。

public class A {
  private int num;
  public A(int num) {
      this.num = num;
  }
  public boolean equals(Object obj) {
      A a = (A) obj;
      return this.num == a.num;
  }
}
public class B {
  private int num;
  public B(int num) {
      this.num = num;
  }
  public boolean equals(Object obj) {
      B b = (B) obj;
      return this.num == b.num;
  }
}

これらのクラスを利用する以下のプログラムを、コンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] ages) {
        A a = new A(10);
        B b = new B(10);
        System.out.println(a.equals(b));
    }
}

A. trueが表示される
B. falseが表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答

16. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
    public static void main(String[] ages) {
      String str = null;
      if (str.equals("")) {
            System.out.println("blank");
      } eles {
            System.out.println("null");
      }
    }
}

A. 「blank」と表示される
B. 「null」と表示される
C. lllegalStateExceptionが発生する
D. NullPointExceptionが発生する
解答

17. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

public class Main {
      public static void main(String[] ages) {
          main(args);
    }
}

A. 何も表示されない
B. StackOverflowErrorが発生する
C. lllegalStateExceptionが発生する
D. ExceptionlnlnitializerErrorが発生する
解答

例外処理(解答)
1. B
2. B
3. E
4. D
5. C
6. B
7. B
8. D
9. B
10. E
11. D
12. D
13. C
14. A
15. D
16. D
17. B

モジュールシステム

1. 次の説明のうち、正しいものを選びなさい。(2つ選択)
A. モジュールの設定は、module-info.javaを記述する
B. モジュールの設定では、どのパッケージを公開するかを記述する
C. モジュールの設定では、どのパッケージを利用するかを記述する
D. module-info.javaがなくてもモジュール化することができる
解答

2. libディレクトリにあるsampleモジュールを実行したい。エントリーポイントを持つクラスをcom.test.Helloとしたときのコマンドとして正しいものを選びなさい。(1つ選択)

A. java -m lib sample/com.test.Hello
B. java --module-path lib com.test.Hello
C. java --module-path lib -m com.test.Hello
D. java --module-path lib -m sample/com.test.Hello
E. java --module-path lib -m sample.com.test.Hello

解答

3. sampleモジュールは、com.sampleパッケージを公開し、testモジュールを利用している。module-info.javaの設定として、正しいものを選びなさい。(1つ選択)

A. module sample {
          exports test;
          requires com.sample;
   }
B. module sample {
          export com.sample;
          require test;
   }
C. module sample {
          requires com.sample;
          requires test;
   }
D. module sample {
          exports com.sample;
          requires test;
   }

解答

4. 次の図のようなモジュールグラフがあったとき、module1でmodule3に属するパッケージのクラスを利用する際の説明として正しいものを選びなさい。(1つ選択)

A. module1のmodule-info.javaで、module2をrequiresで宣言する
B. module1のmodule-info.javaで、module2をrequires transitiveで宣言する
C. module2のmodule-info.javaで、module3をrequiresで宣言する
D. module2のmodule-info.javaで、module3をrequires transitiveで宣言する
解答

5. あらかじめ用意されているモジュールのうち、標準で組み込まれるモジュールとして、正しいものを選びなさい。(1つ選択)
A. java.lang
B. java.base
C. jdk.lang
D. jdk.base
解答

6. module-info.javaに設定したモジュールの設定情報を調べるためのコマンドとして、正しいものを選びなさい。(2つ選択)

A. java --describe-module
B. jdeps --list-deps
C. jmod describe
D. java --show-module-resolution

解答

7. module-info.javaでexportsされていないパッケージを、一時的に利用してコンパイルしたい。javacコマンドのオプションとして正しいものを選びなさい。(1つ選択)

A. --add-exports
B. --exports
C. -add
D. --add-modules

解答

モジュールシステム(解答)
1. A、B
2. D
3. D
4. D
5. B
6. A、C
7. A

Oracle公式 ポイント解説セミナーで理解を深める


資格試験の制度〜実際に試験に出題される問題の傾向・ポイントをOracle公式が解説してくれています。YouTubeの動画はOracleの公式チャンネルが出しているわけではなく、おそらくセミナーを受けた方が画面録画をしてあげてくれたんだと思います。

まとめ

Toshi
Toshi

いかがでしたか?徹底攻略 Java SE 11 Silver 問題集[1Z0-815]対応から抜粋して、問題と解答をまとめさせていただきました。詳しい解説や問題集にある総仕上げ問題をやってみたい方は、ぜひAmazon楽天市場で書籍を購入してみてください!

Toshikazu

Nagasaki→Tokyo→China→Fukuoka

1992/07/02

2017年からブログを運営。
現在エンジニアとして福岡で働いています。

Toshikazuをフォローする
JavaCODE
シェアする

コメント

  1. _a より:

    第2章>問4>選択肢A
    誤:&a
    正:$a
    問題の正答に影響があるので修正お願いします。

    • Toshikazu Toshikazu より:

      コメントありがとうございます!
      テキストを確認しました。
      第2章の問5が誤っていましたね…
      上記の通り修正させていただきました。

    • noName より:

      修正ありがとうございます。
      そうですね、問5の間違いでした💦
      ご対応いただきありがとうございます。

  2. noName より:

    第1章 > 問8 > 問題文
    誤: java Sample a ¥” a¥” “a ” b c
    正: java Sample a ¥” a¥” “a “b c

    問題の正答が変わるため、修正お願いします。

  3. noName より:

    第3章 > 問21 > 選択肢A・B・C
    選択肢の用語が抜けています。修正お願いします。

  4. noName より:

    第6章 > 問9 > 問題文 > コード6行目
    誤: int c = d;
    正: int c = b;

    問題の正答に影響があるため、修正お願いします。

  5. noName より:

    第6章 > 問12 > 問題文 > コード4行目
    誤: [ ] result s.divide(10, 2);
    正: [ ] result = s.divide(10, 2);

    修正お願いします。

  6. noName より:

    第6章 > 問5 > 問題文 > コード7行目
    誤: s2.num += 30;
    正: s2.num = 30;

    修正お願いします。

  7. NGUYEN ANH TUAN より:

    第4章 > 問17 >
    int[] total = 0; が誤りです。int total = 0; にすべきです。
    int[] total = 0;にするとコンパイルエラーが発生する。
    int total = 0;にすると12が表示される

    • Toshikazu Toshikazu より:

      コメントありがとうございます!
      第4章(ループ文)の問17の問題に誤りがあると言うことでしょうか…
      書籍を確認したところ、誤っていないような気がします。
      もう一度確認していただけますと幸いです。