0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者がよくハマる型変換ミス集

0
Posted at

はじめに

Javaを学び始めると、ほぼ必ずぶつかるのが「型変換」の壁です。

・なぜコンパイルエラーになるの?
・同じように見えるのに、なぜ片方だけ動くの?
・int と Integer の違いって何?
・null はなぜ入らないの?

私自身もそうでしたが、エラーメッセージだけでは「なぜダメなのか」といった状態でした。

本記事では、「とりあえず動かす」から一歩進んで、
仕組みを理解しながら書けるようになることを目的にしています。

対象者

  • Javaを学び始めたばかりの方
  • プリミティブ型とラッパークラスの違いがあいまいな方
  • コンパイルエラーの意味がよく分からない方
  • null や Integer の扱いで混乱している方
  • シンプルなコードで理解したい方

❌ ① 大きい型 → 小さい型にそのまま代入

long x = 100L;
int y = x;   // コンパイルエラー

🔎 なぜ?

  • long は 64bit
  • int は 32bit
  • データがあふれる可能性がある

✅ 正しくは:

int y = (int) x;  // キャストが必要

❌ ② 小数を int にそのまま代入

double d = 3.14;
int x = d;   // コンパイルエラー

🔎 なぜ?

  • 小数 → 整数にすると情報が失われる
  • double は小数を含む
  • int は整数のみ

✅ 正しくは:

int x = (int) d;   // → 3 になる(切り捨て)

⚠ 小数部分は消える!


❌ ③ int に null を入れようとする

int x = null;   // コンパイルエラー

🔎 なぜ?

  • int はプリミティブ型
  • null(「何も参照していない」という意味)は入れられない

✅ null を使いたいなら:

Integer x = null;   // OK

❌ ④ null をアンボクシングしてしまう

Integer x = null;
int y = x;   // 実行時エラー(NullPointerException)

🔎 なぜ?

  • Integer → int に変換(アンボクシング)
  • 中身が null なのでエラー

⚠ これはコンパイルは通るが実行時に落ちるので危険!


❌ ⑤ Integer を == で比較する

Integer a = 200;
Integer b = 200;

System.out.println(a == b);  // false

🔎 なぜ?

  • Integer はオブジェクト
  • == は「値」ではなく「参照」を比較する

✅ 正しくは:

a.equals(b);

❌ ⑥ 文字列をそのまま数値に入れる

String s = "123";
int x = s;   // コンパイルエラー

✅ 正しくは:

int x = Integer.parseInt(s);
  • String と int はまったく別の型
  • 数字以外が入ると例外が発生
  • 数字以外が入ると NumberFormatException が発生します。

🎯 ここだけ覚えておけばOK

✔ 小 → 大 は自動
✔ 大 → 小 はキャスト
✔ 小数 → int は切り捨て
✔ int に null は入らない
✔ Integer の比較は equals
✔ 文字列 → 数値は parseInt


おわりに

型変換のエラーは、初心者のうちは「意味不明な壁」に感じます。

ですが実は、Javaはとても親切で、

  • 危険な変換はコンパイル時に止めてくれる
  • null の誤使用は例外で知らせてくれる
  • 型の安全性を守ってくれている

という設計になっています。

エラーは「怒られている」のではなく、
「バグを未然に防いでくれている」サインです。

型変換を理解すると、

  • NullPointerException の原因が分かる
  • なぜ equals を使うのか理解できる
  • 自信を持ってコードが書ける

ようになります。

この記事が、
「なんとなく動かす」から「仕組みを理解して書く」
への一歩になれば嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?