本記事は、Javaを一から学んでいく際の学習メモとして書かれています。
主にインプレスから出版されている「スッキリわかるJava入門 第2版 (スッキリシリーズ)」の内容に沿ったかたちで学習していきます。
今回は、Javaの型変換について学んでいきます。
型変換とは
例えば、以下のようにint型とdouble型をそれぞれ足し合わせた場合、自動的にdouble型に変換され、2.0という値が返ってきます。
int i = 1; double d = 1; System.out.println(i+d);
上記のように異なる型同士の演算において、自動的な型変換が行われます。
上記の例では、int型は4バイト、double型は8バイトのサイズであり、double型の方が格納できる値の範囲が広いため、double型に変換されました。
このように異なる型同士の演算や代入においては、サイズの大きい方の型に自動的に変換されます。
なお、例外としてint型のリテラルにおいては、それよりもサイズの小さいbyte型やshort型への変換が許されています。
以下は型変換が可能かどうかについての一覧になります。
To → | byte | short | int | long | float | double |
From ↓ | ||||||
byte | ◎ | 〇 | 〇 | 〇 | 〇 | 〇 |
short | × | ◎ | 〇 | 〇 | 〇 | 〇 |
int | △ | △ | ◎ | 〇 | 〇 | 〇 |
long | × | × | × | ◎ | 〇 | 〇 |
float | × | × | × | × | ◎ | 〇 |
double | × | × | × | × | × | ◎ |
◎:変換無 〇:自動型変換 △:例外 ×:不可 |
キャストによる型変換
上記の自動的な型変換とは別に、明示的に型変換をする場合は、以下のようなキャスト演算子(cast operator)を利用します。
int i = 1; double d = 1; System.out.println((int)(i+d));
上記ではi+d
での演算結果は2.0
ですが、キャスト演算子により強制的にint型に変換され2
が返ります。
なお、double型からint型にキャストする際に、元の値が小数点以下を保有している場合は切り捨てとなります。
小数点以下を意図的に切り捨てたい場合などもこのキャスト演算子が利用できます。
最後に
今回はJavaの型変換について、基本的なルールを学びました。
次回はif文などの条件分岐について学んでいきます。
参考書籍