1.数据类型的自动转化
java的数据转化是容量小的部分向大的方向转,这个部分很简单,byte->short->int->long,char->int->long;int->double
有一些数据转化虽然是自动的,但是存在数据精度丢失,比如int->float, long->double,long->float;
之前提到,整形常数默认是int,那么按照规则,就不应该存在short s = 10;这样的表达式,这个可以归类为特殊情况,常量int转比他容量小的,就需要容量小的类型的范围可以容纳这个数字。
比如 byte b = 97;正确
但是byte b = 300;错误
2.强制类型转化
进行强制类型转化,可能存在精度丢失问题,但是可以随便转。
int a = (int)3.14;
和C语言一样的强制转化语法
强制类型转化如果超出类型的范围,则会造成各自问题。
byte b = (byte)1000;
b会是什么呢?
3.溢出
这个问题C语言经常出现的,就是类型的范围无法存在太大的值。