自动类型的转换
由低级到高级java进行自动转换
低级到高级的转换范围:
byte ->short ->char->int->long->float->double
- 类型范围小的变量,可以直接赋值给类型范围大的变量。
byte a=90;
int b=a;
例2
char ch='a';
int a=ch;
System.out.println(a);
得到97的ASLL码
为什么要进行类型转换
表达式的自动类型转换
- 在表达式中小范围的变量会自动转换成当前较大范围的类型再运算
byte ->short ->char->int->long->float->double
注意事项:
表达式的最终结果类型由表达式中的最高类型决定
byte a=10;
int b=20;
double c=1.0;
double rs=a+b+c;
System.out.println(rs);
得到最高类型的和
在表达式中,byte,short,char是直接转换成int类型参与运算的。
如byte为例
byte a=120;
byte b=124;
int c;
c= (a+b);
System.out.println(c);
得到244,如果是不转换成int的话就会出错。
强制类型转换
- 大范围的变量赋值给小范围的变量。
数据类型 类型名称=(数据类型)初始值
如:
int a=126;
byte b=(byte)a;
输出得到126,
注意:强制类型转换可能造成数据(丢失)溢出;
浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
double a=99.5;
int b=(int) a;
System.out.println(b);
得到整数部分99小数丢掉了