戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 秋期 午前(科目A)08


問題文

Javaの特徴はどれか。

選択肢

オブジェクト指向言語であり、複数のスーパクラスを指定する多重継承が可能である。
整数や文字は常にクラスとして扱われる。
ポインタ型があるので、メモリ上のアドレスを直接参照できる。
メモリ管理のためのガーベジコレクションの機能がある。(正解)

Javaの特徴はどれか。【午前2 解説】

要点まとめ

  • 結論→Javaは自動ガーベジコレクションを備え、開発者が明示的にメモリ解放を行う必要はありません。
  • 根拠→JavaはJVM上でヒープを管理し、不要になったオブジェクトをガーベジコレクタが検出して回収します。
  • 差がつくポイント→多重継承はクラスでは不可でインタフェースで代替、ポインタはなく参照とプリミティブを区別します。

正解の理由

正解は です。
Javaは実行時にJVMがメモリ管理を行い、不要オブジェクトを自動で回収するガーベジコレクション(GC)機能を備えています。開発者は通常、malloc/freeのような明示的なメモリ解放を行わず、参照がなくなったオブジェクトはGCの対象となります。従って「メモリ管理のためのガーベジコレクションの機能がある」という記述が正しいです。

よくある誤解

  • 「多重継承が可能」と考える誤解:Javaはクラスの多重継承をサポートしておらず、インタフェースで機能的に代替します。
  • 「プリミティブも常にクラス扱い」とする誤解:intやcharなどのプリミティブ型はオブジェクトではなく、必要時に自動ボクシングでラッパークラスに変換されます。
  • 「ポインタがある」と思う誤解:Javaに生のポインタはなく、参照を通じてオブジェクトにアクセスします。ポインタ演算はできません。

解法ステップ

  1. 設問の各選択肢のキーワード(多重継承、プリミティブ、ポインタ、ガーベジコレクション)を確認する。
  2. Javaの基本仕様(クラス継承ルール、プリミティブと参照の違い、メモリ管理方法)と照らし合わせる。
  3. 明らかに仕様と異なる選択肢を順に除外し、残った最も適合するものを選ぶ。
  4. 回答後、特に混同しやすい「参照とポインタ」「多重継承とインタフェース」を念のため振り返る。

選択肢別の誤答解説

  • ア: オブジェクト指向言語であり、複数のスーパクラスを指定する多重継承が可能である。
    → 誤り。Javaはクラスの多重継承をサポートしていません。クラスは単一継承であり、多重継承的な設計はインタフェースで実現します。
  • イ: 整数や文字は常にクラスとして扱われる。
    → 誤り。intやcharなどのプリミティブ型はクラスではなく基本型です。自動ボクシングでIntegerやCharacterに変換される場合がありますが、常にクラス扱いされるわけではありません。
  • ウ: ポインタ型があるので、メモリ上のアドレスを直接参照できる。
    → 誤り。Javaは生のポインタ操作を許可していません。オブジェクトへの参照はあるものの、アドレス演算や直接操作はできず安全性が高められています。
  • エ: メモリ管理のためのガーベジコレクションの機能がある。
    → 正しい。JavaはJVMが自動でガーベジコレクションを行い不要オブジェクトを回収します。→

補足コラム

Javaのガーベジコレクションは世代別(Generational)方式やマーク&スイープなどのアルゴリズムを採用し、JVM実装やバージョンによってG1やZGCなど複数のコレクタが選べます。System.gc()はGCを促す呼び出しに過ぎず、即時実行や回収の保証はありません。また、finalize()は非推奨(deprecated)であり、代わりにtry-with-resourcesや明示的なクローズ処理を推奨します。

FAQ

Q1: Javaにポインタは全く存在しないのですか?
A1: 正確には「生のポインタ操作」は存在しません。参照はオブジェクトを指しますが、アドレス演算や直接メモリ操作は不可です。
Q2: ガーベジコレクションはいつ実行されますか?
A2: 実行タイミングはJVMに依存し保証されません。メモリ状況やGCアルゴリズムにより動作します。
Q3: プリミティブ型をオブジェクトとして扱いたいときは?
A3: 自動ボクシングによりIntegerやCharacterなどのラッパークラスに変換できますが、性能やnull可否に注意が必要です。
Q4: 多重継承が必要な場合、Javaではどう実現しますか?
A4: インタフェースの実装で多重の振る舞いを組み合わせます。Java 8以降はデフォルトメソッドも使えますが、状態の多重継承は設計に注意が必要です。

関連キーワード: Java、ガーベジコレクション、ガベージコレクタ、オブジェクト指向、参照、プリミティブ、多重継承、インタフェース、メモリ管理、JVM
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について