数据类型转换
自动转换(隐式)
- 特点:代码不需要进行特殊处理,自动完成
- 规则:数据范围从大到小
public class DataType {
public static void main (String [] args){
System.out.println(666);//整数,默认为int型
System.out.println(3.14);//浮点数,默认为double型
//右边的int类型自动转换为long类型 数据范围从小到大
long num1 = 999;
System.out.println(num1);
//右边的float类型自动转换为double类型 数据范围从小到大
double num2 = 1.2F;
System.out.println(num2);
//右边的long类型自动转化为float类型 数据范围从小到大
float num3 = 333L;
System.out.println(num3);
}
}
强制转换
- 特点:代码需要进行特殊处理,不能自动完成
- 格式:范围小的类型 范围小的变量名 = (范围小的类型) 范围大的数据
public class DataType {
public static void main (String [] args){
//格式: 范围小的类型 范围小的变量名 = (范围小的类型) 范围大的数据
int num = (int) 500L;
System.out.println(num);
}
}
注意事项
- 强制类型转换一般不推荐使用,有可能发生精度损失、数据溢出。
数据溢出
public class DataType {
public static void main (String [] args){
int num = (int) 6000000000L;
System.out.println(num);
}
}
在这种情况下发生数据溢出。因为数值的范围超过了int类型的范围 最终输出结果为1705032704
精度损失
public class DataType {
public static void main (String [] args){
int num = (int) 3.66;
System.out.println(num);
}
}
在这种情况下发生精度损失。最终输出结果为3。
- byte/short/char三种类型都可以发生数学运算。
- byte/short/char三种类型在运算的时候,都会被先提升为int类型再进行运算。
- boolean不能发生数据类型转换。
ASCII编码表
速记方法
- 48 - ‘0’
- 65 - ‘A’
- 97 - ‘a’