キャスト演算子

広告

サイズが小さい型から大きい型へ変換する場合、単に代入を行うだけで自動的に型の変換が行われていましたが、型の変換を明示的に行う場合にはキャスト演算子を使います。

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

(データ型)式

変換したいデータ型を「(」と「)」の間に記述すると右辺に書かれた式の型を変換することができます。

例えば次のように記述します。

int i = 10;
long l = (long)i;

この例ではint型の変数iをキャスト演算子を使ってlong型に変換してから代入を行っています。この場合は代入するよりも前の時点で既に右辺の値はlong型となっています。

前のページで見た通りサイズが小さい型から大きい型へ代入を行う場合は明示的にキャスト演算子を使用する必要はありませんが、逆にサイズが大きい型から小さい型への変換など必ずキャスト演算子を使ってデータ型を変換する必要がある場合もあります。

なお式の中で演算の優先順位を変更する場合にも「(」と「)」を使いますが、括弧の中がデータ型だった場合はキャスト演算子となります。キャスト演算子の優先順位は比較的高いので記述する場合はどの部分にキャスト演算子が影響するのか注意して下さい。(演算子の優先順位については「演算子の優先順位と結合規則」を参照下さい)。

サンプル

では簡単な例で試しておきます。

JSample3_1.java

class JSample3_1{
  public static void main(String args[]){
    int i = 7;

    float f1 = (float)i / 3;
    float f2 = (float)(i / 3);

    System.out.println("f1 = " + f1);
    System.out.println("f2 = " + f2);
  }
}

コンパイル後に実行すると次のように表示されます。

p3-1

最初の計算式では変数iをfloat型に変換してから3で除算した結果を変数f1へ代入しています。2番目の計算式では変数iを3で除算した結果をfloat型に変換してから変数f2で代入しています。このように演算の内容によっては結果が異なる場合があります。詳しい解説は後のページで行います。

( Written by Tatsuo Ikura )