基本数据类型转换
(1)自动类型转换(隐式类型转换)
Java内部支持自动将数值进行类型提升(把一个类型取值范围较小的数值直接赋值给另外一个取值范围较大的数据类型变量时系统会自动进行类型转换)。所有的数字类型彼此都可以进行转换。boolean类型数据不可与其它数据类型相互转换。
例如,可以将byte变量赋值给short变量,可以将short变量赋值给int变量,可以将int变量赋值给long变量。
要实现自动类型的转换,需要满足两个条件:
1、两种类型彼此兼容(比如,数字之间相互转换)
2、目标类型取值范围必须大于源类型
public static void main(String[] args) {
// TODO Auto-generated method stub
//将byte转换为int
byte a = 13;
int b = a;
System.out.println(b);
//将int转为double
int c = 17;
double d = c;
System.out.println(c);
double num1 = 123.456;
float num2 = num1;
// Type mismatch: cannot convert from double to float
int num3 = 99.99;
// Type mismatch: cannot convert from double to int
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// Type mismatch: cannot convert from float to long
long longData = 3F;
float floatData = 3L;
System.out.println(floatData);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// Type mismatch: cannot convert from float to long
long longData = 3.14;
double doubleData = 3L;
System.out.println(doubleData);
}
(2)强制类型转换(显式类型转换)
Java内部不支持将一个数值赋给范围更小数值范围的变量,除非进行强制类型转换。但是,要注意的是:强制类型转换可能导致溢出或者数据精度丢失甚至发生错误。而且boolean类型数据不参与强制转换。
double num1 = 123.456;
int num2 = (int)num1;
// 输出结果:123
System.out.println(num2);