Javaでは、異なる型の変数を組み合わせて演算する際にキャスト(型変換)を行うことがあります。今回は、以下のコードを通して、その動作と理屈を解説します。
1. コードの解説
質問にあるコードは、double num1 = 12.5, num2 = 30.0;という2つの変数から始まります。次に、int num = (int)(num1 + 17.5);という処理が行われ、最終的にSystem.out.println(num >= num2);という式が評価されます。このコードの各部分を順番に解説します。
2. 変数とキャスト
最初にnum1とnum2はそれぞれ12.5と30.0というdouble型の値を持っています。double型は小数点以下を含む浮動小数点数を扱います。
次に、num1 + 17.5が計算されます。この結果は12.5 + 17.5 = 30.0となり、30.0というdouble型の値が得られます。しかし、この結果はint型のnumに代入されるため、(int)によるキャスト(型変換)が行われます。この時、30.0の小数点以下は切り捨てられ、整数部分だけがnumに代入されます。最終的にnum = 30となります。
3. 比較演算子の評価
次に、System.out.println(num >= num2);が実行されます。この式はnumがnum2より大きいか等しいかを比較するものです。現在、num = 30、num2 = 30.0となっており、num2はdouble型ですが、numはint型です。
Javaでは異なる型の値を比較する場合、自動的に型が一致するように変換されます。この場合、int型のnumはdouble型に変換され、30 >= 30.0となり、結果は「true」になります。
4. まとめとポイント
このコードでは、型変換(キャスト)と比較演算子の使い方について学びました。double型からint型へのキャストによって、小数点以下が切り捨てられ、最終的な比較では型が自動的に調整されます。これにより、intとdoubleの比較が正しく行われ、結果が得られました。


コメント