型変換
「+」などの操作は同じデータ型同士じゃないとできません。
型の違うものを演算するときは、型を変換し同じ型にする必要があります。
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