型変換
「+」などの操作は同じデータ型同士じゃないとできません。
型の違うものを演算するときは、型を変換し同じ型にする必要があります。
javaでは自動変換あります。
System.out.println("佐藤さんは"+20+"歳です");
String型
とint型
を足すと、int型
が自動でString型
に変換されて、文字列として結合されます。
"佐藤さん" + "20" + "歳です"
こんな感じです。
なので、出力は
佐藤さんは20歳です
計算時の自動変換
int型
とdouble型
の計算結果はdouble型
になります。
計算の過程でint型がdouble型に変換されます。
ここで、今まで触れてなかったので補足です。
double型
とは、小数を表すデータ型です。
5 int型
3.14 double型
他にも多くのデータ型があります。それを全て説明するのは、今の私にはまだ無理なので、
リンク貼っておきます。
基本のデータ型
では、話は戻ります。
5 / 2.0
もしくは5.0 / 2
の結果は2.5
になります。5
を5.0
にするように、Javaが自動で型変換を行ってくれます。
System.out.println(5.0 / 2);
上記が下記のようにdouble型
に変換される。
System.out.println(5.0 / 2.0);
2.5
ここで注意点です。
int型同士の計算は結果もint型になり、double型同士の計算は、結果もdouble型になります。特に、int型の5をint型の2で割ると、結果は「2.5」ではなく「2」となり出力結果が変わるので注意しましょう。
System.out.println(5 / 2);
2
System.out.println(5.0 / 2.0);
2.5
となります。
さっき見た通りint型
同士は正確な値を割り出せません。
int number1 = 13;
int number2 = 4;
System.out.println(number1 / number2);
3 //正しい値は3.25
これを強制的に変換し、正しい値を出力することができます。
この方法を,キャスト
と言います。
int型同士の値から、最終的にdouble型の計算結果を得たい場合、どちらか1つをキャストします。
int number1 = 13;
int number2 = 4;
System.out.println((double)number1 / number2);
この様に、どちらか一つをdouble型
にキャストすれば結果は、double型
になります。
3.25