最終更新日:2026年10月6日
fe fe-technology programming java
まず結論
FEでJavaの特徴を問われたら、まず次の4点を切り分けます。
| 論点 | Java |
|---|---|
| クラスの多重継承 | ❌ できない |
| int・charなど | ⭕ プリミティブ型がある |
| C/C++のようなポインタ操作 | ❌ 行わない |
| 不要オブジェクトのメモリ回収 | ⭕ ガベージコレクション(GC) |
試験直前は、
多重継承 → ×
int・char → プリミティブ型
アドレス直接操作 → ×
不要オブジェクト → GC
と整理すると判断しやすくなります。
直感的な説明
Javaはオブジェクト指向言語ですが、「何でもオブジェクト」「何でも自由に継承できる」わけではありません。
また、C/C++のようにメモリアドレスを直接扱うポインタ操作を前提とせず、不要になったオブジェクトのメモリはGCが回収します。
つまり、FEでは「Javaだから○○できる」と広げすぎず、Javaが意図的に制限・自動化している部分を見ることがポイントです。
定義・仕組み
ガベージコレクション(GC)
Javaでは、生成したオブジェクトが不要になったと判断されると、そのメモリ領域を再利用できるようにGCが管理します。
オブジェクトを作る
↓
使用する
↓
到達できなくなる
↓
GCの回収対象になる
重要なのは、不要になった瞬間に必ず回収されるわけではないことです。
「JavaにはGCによる自動的なメモリ管理の仕組みがある」と理解します。
プリミティブ型
Javaには、例えば次のようなプリミティブ型があります。
int 整数
char 文字
double 浮動小数点数
boolean 真偽値
したがって、「整数や文字は常にクラスとして扱われる」という説明は誤りです。
一方、対応するラッパークラスもあります。
| プリミティブ型 | ラッパークラス |
|---|---|
| int | Integer |
| char | Character |
| double | Double |
| boolean | Boolean |
つまり、プリミティブ型がある + 対応するクラスもあると整理します。
クラスの多重継承
Javaのクラスは、複数のクラスを同時に直接継承する多重継承をサポートしません。
クラスA ─┐
├→ クラスC
クラスB ─┘
複数クラスからの継承
→ ×
ただし、Javaでは一つのクラスが複数のインタフェースを実装できます。
クラスの多重継承
→ ×
複数インタフェースの実装
→ ○
ここはFEで混同しやすいポイントです。
ポインタと参照
Javaではオブジェクトを扱うために参照を使いますが、C/C++のようにポインタを使ってメモリアドレスを直接操作することを前提としていません。
したがって、
参照がある = ポインタ型でアドレスを直接操作できる
とは考えません。
科目Aでどう出る?
Javaの特徴を問う問題では、選択肢に別の言語の特徴や、Javaの特徴を言い過ぎた説明が混ざります。
| 選択肢のキーワード | 判断 |
|---|---|
| 複数のスーパークラスを指定 | ❌ クラスの多重継承は不可 |
| 整数や文字は常にクラス | ❌ プリミティブ型がある |
| ポインタでアドレスを直接参照 | ❌ Javaの通常の仕組みではない |
| GCでメモリ管理 | ⭕ Javaの代表的な特徴 |
特に「常に」「直接」「複数のスーパークラス」といった強い表現は、仕様と照らして確認します。
どんな場面で使う?
Javaでプログラムを書くときは、オブジェクトを生成して利用します。
不要になったオブジェクトのメモリ管理をGCに任せられるため、プログラマがC言語の動的メモリのように解放処理を直接記述する場面は基本的にありません。
また、基本的な数値計算などではプリミティブ型を使い、オブジェクトとして扱う必要がある場面ではラッパークラスが関係します。
継承についても、クラス継承とインタフェースを区別することが重要です。
よくある誤解・混同
Javaはオブジェクト指向だから全部オブジェクト?
違います。
Javaにはintやcharなどのプリミティブ型があります。
オブジェクト指向言語 = すべての値がクラスとは限りません。
Javaは多重継承できないから、複数の型を実装できない?
これも違います。
クラスの多重継承はできませんが、複数のインタフェースを実装することはできます。
Javaの参照はポインタ?
オブジェクトを指し示すという直感には似た部分がありますが、FEでは区別します。
C/C++のようにメモリアドレスを直接参照・演算するポインタ操作ができる、という説明なら誤りです。
GCがあるならメモリを意識しなくてよい?
GCがあっても、不要なオブジェクトへの参照を保持し続ければ、回収されないことがあります。
試験ではまず、GCは不要になったオブジェクトのメモリを自動的に管理・回収する仕組みと押さえます。
まとめ(試験直前用)
- Javaにはガベージコレクション(GC)がある
- int・charなどのプリミティブ型がある
- クラスの多重継承はできない
- 複数のインタフェースを実装することはできる
- C/C++のようなポインタによるアドレス直接操作は行わない
- 「Javaだから全部オブジェクト」と考えない
迷ったら次の4行に戻ります。
多重継承 → ×
int・char → プリミティブ型
アドレス直接操作 → ×
不要オブジェクト → GC