😼

JavaSilver取得に向けて②

に公開

こんにちは。

オアシステクノロジーズの中村です。

本日もJavaSilverの問題を解いてみたいと思いますが、その前に前回の試験結果を置いておきます。

ほぼノー勉でも半分は取れてたので勉強すれば次回はいけそう感が出てきますね!

前回は基礎問題でしたが、今回からはトピックごとに問題を解いていこうと思います。

☕【Java Silver模擬問題】配列・static・main・varに関する10問!

Java Silverの試験範囲から、特によく出る次の5テーマをピックアップして、各2問ずつ解説つきで紹介します!


🔹 1. 一次元配列の宣言、インスタンス化、初期化および使用

✅ 問1:配列の宣言と代入

int[] nums = new int[3];
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
System.out.println(nums[3]);

このコードを実行するとどうなる?

A. 10と表示される
B. 30と表示される
C. コンパイルエラー
D. 実行時エラー

解答と解説

正解:D. 実行時エラー
解説 :配列 nums の有効なインデックスは 0〜2 まで。nums[3] は範囲外アクセスなので ArrayIndexOutOfBoundsException が発生します!


✅ 問2:配列の初期化

int[] array = {1, 2, 3};
System.out.println(array.length);

出力結果は?

A. 0
B. 2
C. 3
D. コンパイルエラー

解答と解説

正解:C. 3
解説: 波括弧 {} を使った初期化では、配列の要素数は自動的に決まります。ここでは 3要素 入っているので、length は3になります!


🔹 2. 二次元配列の宣言、インスタンス化、初期化および使用

✅ 問3:2次元配列のサイズ

int[][] matrix = new int[2][3];
System.out.println(matrix.length);

このコードの出力は?

A. 2
B. 3
C. 6
D. コンパイルエラー

解答と解説

正解:A. 2
解説matrix.length は“行数”を表します。new int[2][3] の場合、行が2つ・列が3つなので、正解は2!


✅ 問4:2次元配列のアクセス

int[][] data = {
  {1, 2},
  {3, 4, 5}
};
System.out.println(data[1][2]);

結果は?

A. 3
B. 4
C. 5
D. 実行時エラー

解答と解説

正解:C. 5
解説data[1]{3, 4, 5} なので、data[1][2] は3番目の要素「5」になります!


🔹 3. Local Variable Type(var)の使用

✅ 問5:varの型推論

var name = "Java";
name = 123;
System.out.println(name);

出力されるのは?

A. Java
B. 123
C. コンパイルエラー
D. 実行時エラー

解答と解説

正解:C. コンパイルエラー
解説var は最初に代入した型で固定されます。この場合 String 型なので、あとから int を代入するとエラーに!


✅ 問6:varで宣言可能?

var list;
list = new ArrayList<String>();

このコードは?

A. 正常に動作する
B. コンパイルエラー
C. 実行時エラー
D. Listがnullになる

解答と解説

正解:B. コンパイルエラー
解説var を使うときは、必ず初期化と同時に宣言が必要です。型が推論できないので、こういう書き方はNG!


🔹 4. mainメソッドを持つ実行可能なJavaプログラムの作成

✅ 問7:mainメソッドの定義

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

このコードは?

A. コンパイルできない
B. 実行するとHelloと表示される
C. argsは使えない
D. staticがないので動かない

解答と解説

正解:B. 実行するとHelloと表示される
解説:Javaアプリケーションのエントリーポイントは public static void main(String[] args) です。これは正しい定義ですね!


✅ 問8:mainの書き間違い

public class Main {
    public void main(String[] args) {
        System.out.println("Hi!");
    }
}

結果は?

A. Hi! と表示される
B. エラーになる
C. 実行されない
D. mainではないと怒られる

解答と解説

正解:C. 実行されない
解説:この mainvoid かつ 非static なので、JVMが探している「public static void main」として認識されず、実行されません。


🔹 5. static変数とstaticメソッド

✅ 問9:static変数の共有性

class Sample {
    static int count = 0;
    void increment() {
        count++;
    }
}

Sample s1 = new Sample();
Sample s2 = new Sample();
s1.increment();
s2.increment();
System.out.println(Sample.count);

出力されるのは?

A. 0
B. 1
C. 2
D. コンパイルエラー

解答と解説

正解:C. 2
解説static 変数はクラス全体で共有されます。インスタンスが違っても count は1つしかないので、2回インクリメントされて「2」になります。


✅ 問10:staticメソッドから非staticメソッドを呼び出す

class Test {
    void hello() {
        System.out.println("Hello");
    }

    static void run() {
        hello();
    }
}

このコードの結果は?

A. Helloと表示
B. コンパイルエラー
C. 実行時エラー
D. nullが出る

解答と解説

正解:B. コンパイルエラー
解説static メソッドから 非static メソッド(インスタンスメソッド)を呼び出すには、オブジェクトが必要です。hello() はインスタンスメソッドなので、そのまま呼ぶとエラーになります。


📝 まとめ

Java Silverでは、「仕様通りかどうか」がすごくよく問われます。
特に今回のような配列、main、var、staticのあたりはよく出るので、動作と制約をセットで覚えておきましょう!


業務だと意識することがない or 困ったらデバッグで確認しているのでパッとは出てこないものばかりでした。

残り4セットで一通り勉強すれば受かると信じて学習します!

PS.弊社での正答率は5/10でした。

前回は8/10で合格ラインだったんですが、不合格ラインになりました・・・

精進します🙃

Discussion