一、自动类型转换(隐式转换)
Java中当一个类型取值范围较小的数值直接赋值给另一个取值范围较大的数据类型变量时系统会自动进行类型转换。所有的数字类型彼此之间都可以进行转换,但注意boolean类型数据不可与其他数据相互进行转换。
注意:要实现自动类型转换,应满足两个条件
(1)、两种类型彼此兼容(例如数字之间的相互转换)
(2)、目标类型取值范围必须大于源类型
public class Test03 {
public static void main(String[] args) {
// 自动类型转换:小范围的可以直接赋值给较大范围的
byte b = 1;
short c = b;
int i = c;
long l = i;
float f = i;
double d = f;
}
}
二、强制类型转换(显示转换)
Java内部不支持将一个数值赋值给范围比它数值范围小的变量,除非进行强制类型转换。不过类型转换可能会导致溢出或者数据精度丢失甚至发生错误,而且,boolean类型数据不参与强制类型转换。
public class Test03 {
public static void main(String[] args) {
//强制类型转换:大范围的赋值给较小范围的,可能会溢出或数据精度丢失
double num = 128.123;
float num1 = (float) num;
System.out.println(num1);
int num2 =(int)num;
System.out.println(num2); //输出128
byte num3 = (byte) num;
System.out.println(num3); //-128,不正确,发生溢出错误
}
}
下图为几种数据类型的范围大小

1284

被折叠的 条评论
为什么被折叠?



