今回は引き続き型変換について説明していきます!
前回は「暗黙的型変換」について扱いましたので、今回は「明示的型変換」についてです。
明示的型変換は「キャスト」とも言われ、暗黙的型変換では不可能だった型変換を可能にします。
構文は以下の通りです。
(変換したい型)変換したい値;
ではサンプルプログラムをみてみましょう!
■サンプルプログラム1
class CastSample_01 {
public static void main(String[] args) {
double d = 3.14;
int i = (int)d;
System.out.println("3.14をintに変換 → " + i);
}
}
実行結果
■解説
3行目でキャストを行っています。
double型の3.14という値をint型に変換しています。
この場合、整数では小数部を表すことができないため、切り捨てられてしまうことになります。
このようにキャストによって無理やり型変換を行うと、データに損失が起こるので注意が必要となります。
特に次のような場合に注意が必要となります。
■サンプルプログラム2
class CastSample_02 {
public static void main(String[] args) {
int[] score = { 78, 63, 89, 54, 37 };
int sum = 0;
int people = score.length;
double avg = 0;
for(int i = 0; i < people; i++) {
sum += score[i];
}
avg = sum / people;
System.out.println("人数 : " + people);
System.out.println("合計 : " + sum);
System.out.println("平均 : " + avg);
}
}
実行結果
■解説
このサンプルプログラムは、
- テストを受けた人数
- 全員の合計点
- 平均点
を求めるためのプログラムです。
しかし間違いがあります。
よくみると、平均点が間違ってますね。
本来なら「64.2」になるはずです。
では11行目に注目してみましょう。
左辺のavgはdouble型ですが、右辺はint / intです。
つまりint型からdouble型へと暗黙的型変換が行われているのです。
したがって、11行目を以下のように変更します。
avg = (double)sum / people;
すると平均点が正しく表示されるようになます。
double / intの計算結果はdouble型で返ってきます。
このように平均を求める場合はint/intで結果がdoubleになることが多いです。
そういうときはぜひキャストを利用してみてください。


