IT・情報処理 / Oracle 認定

Java SE 21 Developer (1Z0-830)の無料問題集・例題・出題範囲

Java基礎/OOP/例外/コレクション/ラムダ/モジュール/並行処理

  • 757問
  • 12分野
  • 解説つき・無料で演習
  • 問題の最終更新:

出題範囲(12分野)

  • Javaの基礎とデータ型56問
  • 制御構文65問
  • オブジェクト指向(クラス/インターフェース/sealed/record/enum)64問
  • パターンマッチングとswitch65問
  • 例外処理62問
  • 配列とコレクション(Sequenced Collections含む)65問
  • Stream APIとラムダ式64問
  • 並行処理(仮想スレッド含む)64問
  • Java I/O (NIO.2)63問
  • JDBCによるデータベースアクセス65問
  • ローカライゼーション64問
  • モジュールシステム(JPMS)とアノテーション60問

Java SE 21 Developer (1Z0-830)の例題(6問・解説つき)

スキルサートのAIが出題範囲に沿って作成した演習問題です(過去問ではありません)。アプリでは毎週新しい問題が追加されます。

例題1Javaの基礎とデータ型

Javaのローカル変数型推論(var)を用いた宣言のうち、コンパイルが成功するコードはどれか。1つ選択してください。

  1. var d = (String) null;
  2. var a = 10, b = 20;
  3. var c = null;
  4. var e; e = "Java";
  5. var f = {1, 2, 3};
解答と解説を見る

正解: var d = (String) null;

Javaのローカル変数型推論(var)の制約に関する問題です。正解は『var d = (String) null;』です。varは右辺の型から推論を行うため、単なるnullでは型を特定できませんが、キャストを行うことで推論が可能になります。他の選択肢について、varを用いた複数変数の同時宣言、初期化を伴わない宣言、および配列の初期化子のみを用いた宣言(new int[]等がない場合)は、文法上認められていないためコンパイルエラーとなります。

例題2制御構文

次のコードをコンパイルし、実行した場合の結果として正しいものはどれか。 ```java int x = 10; final int y = 20; switch (x) { case 10 -> System.out.print("A"); case y -> System.out.print("B"); default -> System.out.print("C"); } ```

  1. B
  2. AB
  3. A
  4. コンパイルエラーが発生する
  5. ABC
解答と解説を見る

正解: A

正解は「A」です。Javaのswitch文(アロー構文)では、合致したケースのブロックのみが実行され、従来のコロン形式のように明示的なbreak文を記述しなくてもフォールスルー(次のケースへの移行)は発生しません。変数xの値は10であり、最初のcase 10に一致するため「A」が出力されます。なお、caseラベルに使用される変数yはfinal修飾子が付与された定数式であるため、caseラベルとして有効です。したがって、コンパイルは正常に通り、実行時にAのみが出力されます。他の「AB」や「ABC」はフォールスルーが発生した場合の挙動であり、今回の「->」を用いたスイッチルールでは該当しません。

例題3オブジェクト指向(クラス/インターフェース/sealed/record/enum)

Java 21 において、sealed クラスから permits 句で許可された直接のサブクラスに必ず付与しなければならない修飾子として正しいものはどれか。1つ選べ。

  1. final、sealed、non-sealed のいずれか1つを付与する
  2. abstract のみを付与する
  3. 修飾子は付与しなくてもよい(省略できる)
  4. public または static を付与する
  5. final と abstract を同時に付与する
解答と解説を見る

正解: final、sealed、non-sealed のいずれか1つを付与する

正解は「final、sealed、non-sealed のいずれか1つを付与する」です。sealed クラスの許可されたサブクラスは、継承の閉じ方を明示するため final(これ以上継承不可)、sealed(さらに限定したサブクラスのみ許可)、non-sealed(制約を解除して自由な継承を許可)のいずれか1つを必ず指定する必要があります。abstract はこれらの代替にはならず(abstract クラスでも別途 sealed か non-sealed の指定が必要)、また final と abstract は同時指定できません。修飾子を省略するとコンパイルエラーになります。

例題4パターンマッチングとswitch

次のコードをコンパイルおよび実行した際の結果として、正しいものを選択してください。 ```java sealed interface Shape permits Circle, Square {} final class Circle implements Shape {} final class Square implements Shape {} public class Main { public static void main(String[] args) { Shape shape = new Circle(); var result = switch (shape) { case Circle c -> "Circle"; case Square s -> "Square"; }; System.out.println(result); } } ```

  1. 実行時に MatchException がスローされる
  2. Square と表示される
  3. Circle と表示される
  4. switch式が網羅的(exhaustive)ではないため、コンパイルエラーになる
  5. defaultラベルがないため、コンパイルエラーになる
解答と解説を見る

正解: Circle と表示される

正解は「Circle と表示される」です。Java 21のswitch式では、シール(sealed)型を使用する場合、許可されたすべてのサブクラス(CircleとSquare)がcaseラベルでカバーされていれば、網羅性が満たされていると見なされます。そのため、defaultラベルは必須ではありません。変数shapeにはCircleのインスタンスが代入されているため、最初のケースに一致し結果が出力されます。「Square と表示される」は、型の不一致により誤りです。網羅性は満たされているため「switch式が網羅的ではないため、コンパイルエラーになる」や「defaultラベルがないため、コンパイルエラーになる」も誤りです。実行時に一致するラベルが存在するため「実行時に MatchException がスローされる」も適切ではありません。

例題5例外処理

次のコードを実行した場合の出力結果として正しいものを選択してください。 class MyRes implements AutoCloseable { String name; MyRes(String name) { this.name = name; } public void close() { System.out.print(name + " "); } } public class Test { public static void main(String[] args) { try (MyRes r1 = new MyRes("A"); MyRes r2 = new MyRes("B")) { System.out.print("Try "); } catch (Exception e) { System.out.print("Catch "); } } }

  1. Try
  2. Catch
  3. Try A B
  4. Try
  5. Try B A
解答と解説を見る

正解: Try B A

正解は「Try B A」です。try-with-resources ステートメントを使用すると、括弧内で宣言されたリソースは、try ブロックの終了時に自動的にクローズされます。リソースが複数ある場合、それらは宣言された順序とは「逆の順序」でクローズされます。このコードでは r1 (A)、r2 (B) の順に宣言されているため、まず try ブロック内の「Try 」が出力された後、r2.close() が実行されて「B 」が出力され、次に r1.close() が実行されて「A 」が出力されます。クローズ処理は catch ブロックが実行されるよりも前に行われるため、出力順序は必ず Try が先頭になります。この動作により、依存関係のあるリソース(例:ストリームとそのラップ先)を安全に解放することができます。

例題6配列とコレクション(Sequenced Collections含む)

Java 21で導入されたSequenced Collectionsに関する問題です。次のコードを実行した際に出力される結果を選択してください。 ```java List<String> list = new ArrayList<>(); list.add("middle"); list.addFirst("front"); list.addLast("back"); System.out.print(list.getFirst() + ":" + list.reversed().getFirst()); ```

  1. front:back
  2. middle:front
  3. back:front
  4. front:front
  5. middle:back
解答と解説を見る

正解: front:back

正解は『front:back』です。Java 21で導入されたSequencedCollectionインターフェースでは、要素の順序を意識した操作が可能になりました。ArrayListはこのインターフェースを実装しているため、addFirst("front")によってリストの先頭に、addLast("back")によってリストの末尾に要素が追加されます。この結果、リストの内容は [front, middle, back] となります。getFirst()は先頭の "front" を返し、reversed()はリストの逆順ビューを返すため、reversed().getFirst() は元のリストの末尾である "back" を返します。したがって、これらをコロンで連結した結果が出力されます。

よくある質問

Java SE 21 Developer (1Z0-830)の問題はスキルサートで何問解けますか?
全757問・12分野の問題を用意しています。問題は出題範囲に沿って随時追加しています。
無料で使えますか?
無料プランで週10回の演習(1回10問)と、毎日の「今日の1問」を利用できます。解説を読み、わからない点はAIに質問できます。
ここの問題は過去問ですか?
過去問ではありません。出題範囲に沿ってAIが作成した演習問題です。すべて解説つきで、間違えた問題は繰り返し解けます。

Java SE 21 Developer (1Z0-830)の対策はアプリで

AIが毎週生成する新作問題・ランクマッチ・週次ランキング・AI診断で「続けられる」資格学習を。無料で始められます。