カテゴリ: JavaSilver試験対策 更新日: 2026/03/24

Javaのデータ型と型変換の完全ガイド!初心者でも理解できる解説

021
Javaのデータ型と型変換

先生と生徒の会話形式で理解しよう

生徒

「Javaで型変換に関するエラーが出てしまいました。なぜエラーが起きるんでしょうか?」

先生

「いい質問ですね。Javaでは、異なるデータ型間で値を代入する際に制約があります。今日は、これについて詳しく説明しましょう!」

1. Javaのデータ型とその範囲

1. Javaのデータ型とその範囲
1. Javaのデータ型とその範囲

Javaにはいくつかの基本データ型があり、それぞれ異なる範囲の数値を扱います。特に重要なのは以下のデータ型です。

  • byte型: -128 ~ 127
  • short型: -32,768 ~ 32,767
  • int型: -231 ~ 231-1
  • long型: -263 ~ 263-1
  • float型: 約7桁の精度を持つ小数点数
  • double型: 約16桁の精度を持つ小数点数

型の範囲外の値を代入しようとすると、コンパイルエラーが発生します。

2. 型変換のルール

2. 型変換のルール
2. 型変換のルール

Javaでは、データ型のサイズが異なる場合、小さい型から大きい型への変換は自動的に行われます。一方、大きい型から小さい型への変換は、明示的なキャストが必要です。


public class TypeConversionExample {
    public static void main(String[] args) {
        int largeValue = 100;
        short smallValue = (short) largeValue; // 明示的なキャスト
        System.out.println(smallValue);
    }
}

明示的なキャストが必要な場合、プログラマーがデータの精度を損なう可能性を理解した上で、型変換を行うことが重要です。

3. 数値リテラルのデフォルト型

3. 数値リテラルのデフォルト型
3. 数値リテラルのデフォルト型

Javaでは、数値リテラルのデフォルト型が決まっています。

  • 整数リテラル: デフォルトでint
  • 浮動小数点数リテラル: デフォルトでdouble

そのため、float型の変数にdouble型のリテラルを代入する場合も明示的なキャストが必要です。


public class LiteralExample {
    public static void main(String[] args) {
        float value = (float) 10.0; // 明示的なキャストが必要
        System.out.println(value);
    }
}

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 型変換に関する具体例

4. 型変換に関する具体例
4. 型変換に関する具体例

ここでは、いくつかの具体例を紹介します。

例1: 範囲外の値をbyte型に代入


public class ByteExample {
    public static void main(String[] args) {
        byte number = (byte) 128; // 明示的なキャスト
        System.out.println(number); // 結果は -128
    }
}

例2: int型とlong型の演算


public class IntLongExample {
    public static void main(String[] args) {
        int value1 = 5;
        long value2 = 10L;
        long result = value1 + value2; // 演算結果は long 型
        System.out.println(result);
    }
}

例3: float型への代入


public class FloatExample {
    public static void main(String[] args) {
        float value = (float) 3.14; // 明示的なキャストが必要
        System.out.println(value);
    }
}

5. 試験対策として覚えておくべきポイント

5. 試験対策として覚えておくべきポイント
5. 試験対策として覚えておくべきポイント

Javaのデータ型について、特に以下のポイントを覚えておくと良いでしょう。

  • byte型: -128 ~ 127
  • short型: -32,768 ~ 32,767
  • 浮動小数点数のデフォルトはdouble
  • 異なる型の演算では、小さい型が大きい型に変換される

6. 暗黙的型変換(プロモーション)の仕組み

6. 暗黙的型変換(プロモーション)の仕組み
6. 暗黙的型変換(プロモーション)の仕組み

Javaでは、小さなデータ型の値を大きなデータ型の変数に代入する場合、特別な記述をしなくても自動的に型が変換されます。これを暗黙的型変換(または数値プロモーション)と呼びます。

例えば、int型(32ビット)の値はlong型(64ビット)に安全に収まるため、Javaが自動で変換処理を行ってくれます。


public class PromotionExample {
    public static void main(String[] args) {
        int i = 100;
        long l = i;      // 自動的にlongへ変換される
        double d = l;    // 自動的にdoubleへ変換される
        System.out.println("longの値: " + l);
        System.out.println("doubleの値: " + d);
    }
}

このように、データの欠落が起こらない「格上げ」の変換については、コンパイラが自動でサポートしてくれるため、コードがスッキリ書けます。

7. 明示的型変換(キャスト)による情報の欠落

7. 明示的型変換(キャスト)による情報の欠落
7. 明示的型変換(キャスト)による情報の欠落

逆に、大きな型から小さな型へ変換する明示的型変換(キャスト)を行う際は注意が必要です。無理やり小さな「器」にデータを詰め込むため、元の数値が壊れてしまう「桁あふれ」や「精度の低下」が発生することがあります。

  • 整数リテラルの場合: 範囲を超えると符号が反転したり、全く別の数字になったりします。
  • 浮動小数点数の場合: doubleからintへキャストすると、小数点以下がバッサリ切り捨てられます。

public class CastingRisk {
    public static void main(String[] args) {
        double pi = 3.99;
        int truncatedPi = (int) pi; // 小数点以下切り捨て
        System.out.println("変換後の値: " + truncatedPi); 
    }
}

変換後の値: 3

実行結果の通り、3.994 に切り上げられるのではなく、単純に 3 になります。キャストを使うときは、こうしたデータの変化を予測しておく必要があります。

8. 演算時の型昇格ルールに気をつけよう

8. 演算時の型昇格ルールに気をつけよう
8. 演算時の型昇格ルールに気をつけよう

Javaの計算式では、複数の型が混ざっている場合、式の中の最も大きな型に合わせて全員が型変換されてから計算が行われます。特に、整数同士の計算であっても int 未満の型(byte, short)は、計算の瞬間に自動的に int へ昇格されるという面白いルールがあります。


public class CalcPromotion {
    public static void main(String[] args) {
        short a = 10;
        short b = 20;
        // short c = a + b; // エラー!a+bの結果は int 型になるため
        short c = (short) (a + b); 
        System.out.println("合計: " + c);
    }
}

プログラミング未経験者の方は「なぜ short 同士の足し算の結果が short に入れられないの?」と驚くかもしれませんが、これはJavaが計算精度を保つために設けている安全策です。この「演算時の昇格ルール」を知っておくと、謎のコンパイルエラーに悩まされることがなくなりますよ。

まとめ

まとめ
まとめ

Javaのデータ型と型変換について学びました。この記事で取り上げた内容を振り返ると、データ型の範囲を正確に理解することがエラーの回避に繋がると分かりました。また、暗黙的な型変換と明示的なキャストの違いを知ることで、プログラムの挙動を予測できるようになります。これにより、より効率的でバグの少ないコードを書くことができるようになるでしょう。

特に、数値リテラルのデフォルト型(整数リテラルはint、浮動小数点数リテラルはdouble)についての理解が深まったことは重要なポイントです。これらの基礎知識は、実際の開発で役立つ場面が多いので、確実に身に付けておきましょう。


public class SummaryExample {
    public static void main(String[] args) {
        // 明示的なキャストの例
        long largeValue = 1000L;
        int smallerValue = (int) largeValue; // キャストが必要
        System.out.println(smallerValue);

        // デフォルト型の注意点
        float pi = (float) 3.14; // 明示的なキャスト
        System.out.println(pi);

        // 演算での型変換
        int x = 5;
        long y = 10L;
        long result = x + y; // xがlong型に自動変換される
        System.out.println(result);
    }
}

以上のような例を試すことで、Javaのデータ型や型変換のルールを実感を持って理解することができます。

先生と生徒の振り返り会話

生徒

「今日の型変換の話、とても勉強になりました!特に、キャストの重要性がよく分かりました。」

先生

「そうですね。型変換はJavaプログラミングの基礎中の基礎ですが、理解しておくと後々とても役立ちます。特に演算の際の型変換や、範囲外の値を扱う時のエラーには注意してくださいね。」

生徒

「明日、自分でサンプルプログラムをいくつか作って、今日学んだことを復習してみます!」

先生

「素晴らしい心がけです。わからないことがあれば、また質問してくださいね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaのデータ型にはどんな種類があるのですか?

Javaの基本的なデータ型には、整数を扱うbyte、short、int、long、小数を扱うfloat、doubleがあります。それぞれ扱える数値の範囲や精度が異なります。

Javaでint型とlong型の違いは何ですか?

int型は32ビットで約21億までの整数を扱えますが、long型は64ビットで非常に大きな整数も扱えます。intよりlongの方が広い範囲を扱える型です。

Javaでfloatとdoubleの違いとは何ですか?

floatは約7桁の精度で小数を扱い、doubleは約16桁の精度があります。doubleの方が高精度で、デフォルトで使われる浮動小数点型です。
JavaSilver試験対策の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク