Java - 型変換

型変換とは

型変換とは、異なるデータ型の間で演算が行われる時に発生します。例えば int 型と long 型の値を計算するような場合です。この場合、いずれかの値がもう一方の値のデータ型に変換が行われます。変換は、サイズが小さい型から大きい型への変換と、大きい型から小さい型への変換があります。

ただし、boolean 型は例外で boolean 型から他のデータ型に変換はできません。また、他のデータ型を boolean 型に変換することもできません。

サイズが小さい型から大きい型への変換

より大きなサイズに型変換する場合、値は変わらないため安全に変換できます。以下の例では、short 型から int 型、int 型から long 型に変換されます。

short s = 10;
int i = s;
long l = i;
サイズが小さい型から大きい型への変換

ただし、整数から浮動小数点に変換する場合は注意が必要です。float 型や double 型には有効桁数があり、float 型ではおよそ 7 桁、double 型ではおよそ 16 桁となっています。

有効桁数とは、信頼できる値が何桁までなのかを表すものです。例えば、有効桁数が 3 桁であれば 12.345 という数値で信頼できるのは 12.3 までとなります。それ以降の数値は、誤差が含まれている可能性があります。

以下の例では、有効桁数を超えて型変換が行われているため、誤差がでています。

class test{
  public static void main(String[] args){
    long l = 1234567890L;
    float f = l;
    
    System.out.println(f); // 1.23456794E9
  }
}
サイズが小さい型から大きい型への変換

サイズが大きい型から小さい型への変換

サイズが大きい型から小さい型への変換する場合、「精度が落ちている可能性」というコンパイルエラーが表示されます。以下の例では、int 型から short 型へ変換を行っている例です。

class test{
  public static void main(String[] args){
    int i = 10;
    short s = i; // エラー
    
    System.out.println(s); 
  }
}
サイズが小さい型から大きい型への変換

サイズが大きい型から小さい型へ変換を行う場合はキャスト演算子を使って明示的に型変換を行わなければなりません。キャスト演算子を使うことで型変換が正常に行われます。

class test{
  public static void main(String[] args){
    int i = 10;
    short s = (short)i;
    
    System.out.println(s); 
  }
}
サイズが小さい型から大きい型への変換

キャスト演算子

キャスト演算子の書式は次の通りです。

(データ型)式
キャスト演算子の書式

例えば int 型の変数をキャスト演算子を使って long 型に変換するには、以下のように記述します。

int i = 10;
long l = (long)i;
キャスト演算子

関連記事