💭 はじめに
Javaの勉強をしていると、こんな疑問にぶつかるよね。
- プリミティブ型と参照型って何がちがうの?
- どっちを使えばいいの?
- 資格取得のときにしか聞かなくない?
この記事では、そんなJavaの基本中の基本である
プリミティブ型と参照型の違いを、例を交えてやさしく解説するよ!
1. プリミティブ型とは?
プリミティブ型(基本型)は、Javaに用意された超シンプルなデータ型!
型の名前 | 例 | 意味 |
---|---|---|
int |
42 | 整数(小数なし) |
double |
3.14 | 小数 |
boolean |
true / false | 真偽値 |
char |
'A' | 1文字 |
📦 値そのものを持っていて、メモリの中にそのまま保存されるよ。
int hp = 100; // hpという箱に"100"を直接入れる感じ
2. 参照型とは?
参照型は、オブジェクト(≒データのかたまり)を扱う型。
プリミティブ型とちがって、値そのものじゃなくて
「そのデータがある場所(アドレス)」を持ってるよ。
String name = "Pikachu"; // name は 文字列データがある場所を持ってる
📍たとえばこんな感じのものがある。
型の名前 | 例 | 用途 |
---|---|---|
String |
"Hello" | 文字列 |
List |
List | リスト構造(配列みたい) |
Map |
Map<String, String> | キーと値の組み合わせ |
Pokemon (自作) |
new Pokemon() | 自分で作ったクラスも参照型! |
3. ちがいを表でまとめてみよう!
項目 | プリミティブ型 | 参照型 |
---|---|---|
値の保持 | 値そのものを直接持つ | アドレス(場所)を持つ |
null の代入 | ❌ できない | ✅ できる |
メモリの保存場所 | スタック領域またはヒープ | 主にヒープ領域 |
メソッド呼び出し | ❌ できない | ✅ できる |
初期値 | 0, falseなど | null |
4. ラッパークラスって何?
プリミティブ型には、それぞれ対応する 参照型(オブジェクト型) があるよ。
これを「ラッパークラス(Wrapper Class)」と呼ぶよ。
プリミティブ型 | ラッパークラス |
---|---|
int |
Integer |
double |
Double |
boolean |
Boolean |
char |
Character |
ラッパークラスは、プリミティブの値をオブジェクトとして扱えるように
「包んで(wrapして)」 くれるクラスなんだ!
int a = 10;
Integer b = Integer.valueOf(a); // int → Integer に変換
こうすることで、List<Integer>
みたいにコレクションに入れたり、
null を扱ったり、メソッドが使えたりするんだよ。
5. 例で理解しよう!
🔸 プリミティブ型(例:HP)
int pikachuHp = 100;
pikachuHp = pikachuHp - 10; // ダメージを受けた!
🔸 参照型(例:ポケモンクラス)
Pokemon pika = new Pokemon("ピカチュウ", 100);
pika.takeDamage(10); // ダメージ処理もオブジェクトに任せる!
🎒 ポケモンでたとえるなら…
型 | イメージ |
---|---|
プリミティブ型 | 体力・レベル・素早さなど、具体的な数値をそのまま持ってる |
参照型 | ポケモン本体(技・名前・HPなどを持ったデータのかたまり)を指してる |
💬 まとめ
- プリミティブ型 → 値そのもの。軽いし速い!
- 参照型 → データのかたまり(オブジェクト)を指す。便利だけどnull注意!
- ラッパークラス → プリミティブ型をオブジェクト型として扱いたいときに使う!
あとがき
ここまで読んでくれて、本当にありがとうございました。
「プログラミングって難しい…」って思ってた人も、
「ちょっと楽しいかも…!」って思ってもらえたらうれしいな。
次の投稿も、よろしくおねがいします。
💬 コメント・フィードバック歓迎!
「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!