今回は型変換について説明していきます!
Javaは型に非常に厳しい言語です。
変数には代入できるデータ型が必ず決められています。
したがって、
int i = 3.14;
や
double d = “あいうえお”;
といった記述はコンパイルエラーとなってしまします。
しかし、実は次のような場合は異なる型の変数へ代入することができます。
■サンプルプログラム
class TypeConvSample_01 { public static void main(String[] args) { byte b = 10; int i = b; System.out.println("iの値は " + i + " です"); } }
実行結果
この通り、int型の変数にbyte型の値を代入しています。
にも関わらずコンパイルエラーも出ず、ちゃんと実行することができます。
ではなぜ型の異なる値を代入できるのでしょうか。
実は「拡大変換のルール」という規則があります。
■拡大変換のルール
.先ほどの例で説明しましょう。
まず、byte型はint型に変換可能です。
これはbyteで表すことができる範囲.より、intで表すことができる範囲の方が大きいからです。
byteの範囲 → -128 ~ 127
intの範囲 → -2,147,483,648 ~ 2,147,483,647
となりますので、byteで表現可能な範囲はintでも表現可能というわけです。
以下が変換可能な型を示した表になります。
イメージで考える以下のようになります。
このように、範囲が大きな型に移し変えることができるわけです。
さらに整数は小数にすることができます。
その際には「.0」をつけてあげればいいわけです。
■まとめ
上記のように自動で行ってくれる型変換を「暗黙的型変換」と言います。
そして実は暗黙的にできない型変換を無理やり行う方法も存在します。
それを「明示的型変換」と言います。
次回はその「明示的型変換」について扱いたいと思います。