Tips

Java Silver 練習問題14

Java Silver 練習問題14

Java Silverに関する問題を出題していきます!

■問題1

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>(1);
        list.add("Java");
        list.add("PHP");
        list.add("Swift");

        System.out.println(list.get(2));
    }
}
  1. 「Java」と表示
  2. 「PHP」と表示
  3. 「Swift」と表示
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 3:「Swift」と表示】
解説
ArrayListは配列と異なり、要素数は可変です。
要素数3で初期化されていますが、3つ以上の要素を格納することも可能です。
※【訂正】2017/03/28
誤:要素数3で初期化されていますが、
正:要素数1で初期化されていますが、

 

 

■問題2

変数listの要素数を出力するためには、①にはどのような記述をすればよいか?適切なものを選べ。

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>(3);
        list.add("おはよう");
        list.add("こんにちは");
        list.add("こんばんは");

        System.out.println(①); // ①に当てはまるものを選べ
    }
}
  1. list
  2. list.length
  3. list.length()
  4. list.size
  5. list.size()
解答はここをクリック!

【解答 5:list.size()】
解説
ArrayListの要素数を求めるには変数名.size()を使用します。
配列では変数名.lengthでしたが、ArrayListは異なるので注意しましょう。

 

■問題3

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList<int> nums = new ArrayList<int>(3);
        nums.add(1);
        nums.add(2);
        nums.add(3);

        int sum = 0;
        for(int i = 0; i < nums.size(); i++) {
            sum += nums.get(i);
        }
        System.out.println(sum);
    }
}
  1. 「0」と表示
  2. 「6」と表示
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】
解説
5行目のArrayList宣言時にコンパイルエラーがおきます。
原因はArrayList<int>のint部分にあります。
<>でデータ型を指定する仕組みをジェネリックスといいますが、
ジェネリックスで指定できる型はオブジェクト参照型のみで基本データ型は指定できません。

 

■問題4

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList list = new ArrayList(3);

        list.add(10);
        list.add(3.14);
        list.add("Hello");

        System.out.println(list.get(0));
    }
}
  1. 「10」と表示
  2. 「3.14」と表示
  3. 「Hello」と表示
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 1:「10」と表示】
解説
ジェネリックスを指定しないと様々な型の値を格納することができます。
そのためエラーは起きず、実行することができます。
しかし、不正な値が入ってもエラーで検知できなくなってしまいます。

 

■問題5

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20L);
        list.add(30);

        int sum = 0;
        for(int i = 0; i < list.size(); i++) {
            sum += list.get(i);
        }
        System.out.println(sum);
    }
}
  1. 「60」と表示
  2. 5行目でコンパイルエラー
  3. 7行目でコンパイルエラー
  4. 10行目でコンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 3:7行目でコンパイルエラー】
解説
5行目のArrayListの宣言部右辺の<>の中と()の中が書かれていません。
()の要素数は省略できますが、実は<>の中も省略することができます。
左辺での指定があると右辺ではこれを書かなくてもの扱いになります。
したがってlistにはInteger型またはint型しか格納することはできず、コンパイルエラーになります。

 

前回の問題

次回の問題

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search