前回はプリミティブ型とラッパークラスの違いを学びました。
今回は「キャストと型変換」について解説します。数値型間の変換・オブジェクトのキャスト・文字列との変換など、よく使う型変換をまとめます。
数値型の変換
数値型には「拡大変換」と「縮小変換」があります。
拡大変換(自動): byte → short → int → long → float → double
縮小変換(キャストが必要): double → float → long → int → short → byte
サンプルコード
ファイル作成
「Java64」フォルダに CastTest.java という名前でファイルを作成します

コード入力
public class CastTest {
public static void main(String[] args) {
// 数値型の拡大変換(自動)
int i = 100;
long l = i; // int → long(自動)
double d = i; // int → double(自動)
System.out.println("int→long: " + l);
System.out.println("int→double: " + d);
// 数値型の縮小変換(キャストが必要・精度が落ちる)
double pi = 3.14159;
int piInt = (int) pi; // 小数点以下が切り捨て
System.out.println("double→int: " + piInt);
long bigNum = 1234567890123L;
int truncated = (int) bigNum; // 上位ビットが失われる
System.out.println("long→int(桁あふれ): " + truncated);
// 文字列への変換
System.out.println("\n--- 文字列への変換 ---");
int num = 42;
String s1 = String.valueOf(num);
String s2 = Integer.toString(num);
String s3 = "" + num; // 簡易だが非推奨
System.out.println("valueOf: " + s1);
System.out.println("toString: " + s2);
System.out.println("+ \"\": " + s3);
// 文字列からの変換
System.out.println("\n--- 文字列からの変換 ---");
System.out.println("parseInt: " + Integer.parseInt("123"));
System.out.println("parseDouble: " + Double.parseDouble("3.14"));
System.out.println("parseBoolean: " + Boolean.parseBoolean("true"));
// 変換失敗時
try {
Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("変換失敗: " + e.getMessage());
}
// オブジェクトのキャスト
System.out.println("\n--- オブジェクトのキャスト ---");
Object obj = "Hello, Java!";
// 従来の書き方
if (obj instanceof String) {
String str = (String) obj;
System.out.println("長さ: " + str.length());
}
// パターンマッチング(Java 16+)
if (obj instanceof String str) {
System.out.println("大文字: " + str.toUpperCase());
}
// ClassCastExceptionの例
Object num2 = Integer.valueOf(42);
try {
String s = (String) num2; // IntegerをStringにキャストしようとする
} catch (ClassCastException e) {
System.out.println("ClassCastException発生");
}
}
}

コンパイル
javac CastTest.java

実行
java CastTest
実行結果は次のようになります。
int→long: 100
int→double: 100.0
double→int: 3
long→int(桁あふれ): 1912276171
--- 文字列への変換 ---
valueOf: 42
toString: 42
+ "": 42
--- 文字列からの変換 ---
parseInt: 123
parseDouble: 3.14
parseBoolean: true
変換失敗: For input string: "abc"
--- オブジェクトのキャスト ---
長さ: 12
大文字: HELLO, JAVA!
ClassCastException発生

型変換のまとめ
数値→数値 拡大変換は自動、縮小変換は(型)でキャスト
数値→文字列 String.valueOf() または toString()
文字列→数値 Integer.parseInt() / Double.parseDouble()
オブジェクト instanceof で確認してからキャスト
まとめ
型変換はJavaプログラミングで頻繁に登場します。数値の縮小変換は精度が落ちること、文字列→数値変換では NumberFormatException に備えること、オブジェクトのキャストは instanceof で確認することを覚えておきましょう。
2026/08/24(月) ぱんまる


コメント