データ型変換の暗黙的な変換
この図には、情報を失うことなく変換を示す6つの実線の矢印と、精度を失う可能性のある変換を示す3つの破線の矢印があります。
2つの値をバイナリ演算子で接続する場合は、2つのオペランドを同じタイプに変換してから、計算を実行する必要があります:
- 2つのオペランドの一方がdouble型の場合、もう一方のオペランドはdouble型に変換されます。
- それ以外の場合、一方のオペランドがfloat型の場合、もう一方のオペランドはfloat型に変換されます。
- それ以外の場合、一方のオペランドがlong型の場合、もう一方のオペランドはlong型に変換されます。
- それ以外の場合は、両方のオペランドがint型に変換されます。
フロートタイプとロングタイプは操作され、自動的にフロートタイプに変換されます。
public class DataType01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//float和long类型进行运算,自动转换为float类型
float a = 10;
Long b = 11L;
float c = a + b;
System.out.println(c);
}
}
Byte型とint型が操作され、自動的にint型に変換されます。
public class DataType02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte a = 10;
int b = 20;
int c = a + b;
System.out.println(c);
}
}
データ型変換の強制型変換
前のセクションで見たように、必要に応じて、int型の値は自動的にdouble型に変換されます。しかし一方で、doubleをintに変換する必要がある場合もあります。Javaでは、そのような値間の型変換が許可されており、もちろん一部の情報が失われる可能性があります。情報が失われる可能性のあるこの変換は、キャストを通じて行う必要があります。
double型変数をint型にキャストします。
public class DataType03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
double a = 37.5;
System.out.println((int)a);
}
}