Java | 型変換とキャスト演算子

Java Java
スポンサーリンク

Javaの型変換(キャスト)を初心者向けに理解する

では、Javaの 型変換(キャスト) を初心者向けに、かみ砕いて、たくさんの例を交えて解説します。

Javaでは 変数には必ず型がある ので、異なる型の値を代入するときは注意が必要です。


1. 型変換の基本ルール

  • 同じ型同士 → そのまま代入できる int a = 10; int b = 20; b = a; // OK
  • 型が違う場合 → エラーになることがある int a = 10; double d; d = a; // OK(int → double は自動で変換) double e = 3.14; int c; c = e; // エラー(double → int は自動変換されない)

2. 自動型変換(拡大変換)

「扱える範囲が狭い型 → 広い型」の場合、自動で変換されます。

int i = 100;
double d = i;  // int → double に自動変換
System.out.println(d); // 100.0
Java
  • intは整数しか扱えませんが、doubleは小数も扱えるので安全に変換できます。
  • char → int も自動で変換されます。
char ch = 'A';
int num = ch;
System.out.println(num); // 65 (Aの文字コード)
Java

3. キャスト演算子で型変換(縮小変換)

「扱える範囲が広い型 → 狭い型」は自動で変換されません。
その場合は キャスト を使います。

double d = 3.14;
int i = (int) d;  // キャストして整数に変換
System.out.println(i); // 3(小数は切り捨て)
Java
  • (int) の部分がキャスト演算子です。
  • キャストすると、値が変わる可能性があります(小数点は切り捨て、大きな数はオーバーフロー)。

4. 範囲を超えた値のキャストに注意

long big = 1234567890123L;
int small = (int) big;  // intの範囲を超えている
System.out.println(small); // 意図しない値になる
Java
  • intは約±21億までしか扱えないので、範囲を超えると「ぐちゃぐちゃ」な値になります。
  • キャストは便利ですが、安全な値か確認することが大事です。

5. 数値リテラルと型変換の例外

小さなリテラルなら、キャストなしでも代入できる場合があります。

byte b = 10;   // OK(10はbyteの範囲)
short s = 100; // OK(100はshortの範囲)
char c = 65;   // OK(文字コード65)
Java

でも変数から代入すると自動変換はされません:

int i = 100;
byte b = i; // エラー
Java

6. 初心者向けまとめ

  • 「小さい型 → 大きい型」は自動で変換される
  • 「大きい型 → 小さい型」はキャストが必要
  • キャストすると値が変わることがある(切り捨てやオーバーフロー)
  • 数値リテラルは一部キャスト不要

7. 練習問題

問題1

int i = 50;
double d = i; // この行はOK?
Java

問題2

double d = 3.99;
int i = d; // この行はOK?
Java

問題3

double d = 3.99;
int i = (int) d; // 出力は?
Java

問題4

long big = 3000000000L;
int small = (int) big; // 出力は?
Java

問題5

int i = 100;
byte b = i; // この行はOK?
Java

8. 練習問題の解答

1️⃣ OK(int → doubleは自動変換される)
2️⃣ エラー(double → intは自動変換されない)
3️⃣ 3(小数点以下切り捨て)
4️⃣ -1294967296(オーバーフローして予期しない値になる)
5️⃣ エラー(int → byteは自動変換されない)


ポイント

  • 型変換は「安全かどうか」で自動か手動かが決まります。
  • キャストは「自己責任で変換する」というイメージ。
  • 初心者はまず「小さい型→大きい型」はOK、「大きい型→小さい型」はキャスト必須、と覚えましょう。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました