0、基本数据类型:4类、8种
1、布尔类型不与其他基本类型转换
2、整形、字符型、浮点型在混合运算的时候遵循以下原则:
容量小的数据类型自动转换为容量大的数据类型,容量从小到大排序:
byte、short、char->int->long->float->double
3、byte、short、char之间不转换,3者在运算的时候会先转换成int
4、有多种数据类型混合运算的时候,系统首先自动将所有的数据类型转换成容量最大的数据类型,再计算
5、实数常量:如1.1默认是double
6、整形常量:如1默认是int
7、高容量的向低容量的转化需要加强制类型转换
例子:
byte a=1; //这样是可以的,只要这里的int数值不超过byte的表示范围(此句可以认为是第8条),byte的表示范围
byte b=2; // -127~127
byte c=a+b; //这样就是错的了,因为两个byte类型在运算之前会先转换为int,也就是说a+b的结果是int的,这里就需
//要强制类型转换
byte a=89;
byte b=67;
byte c=(byte)a+b;
System.out.print(c);//这样是可以的,会把多余的3个字节直接去掉,取余下的部分。
double d=1e1000;
float f=(float)d; //会产生溢出,float类型在内存中要能表示出小数点,从double向float转换直接去掉高位字节是表示不出小数部分的,因此会是一个Infinity无限大的数。(这可作为第9条)
相反,从float向double转换的时候,直接去掉小数部分就可以了。