1.自动类型提升:以大的为主,小的向大的方向提升,提升为同一类型的数据后在进行运算
byte b = 3; //b = b + 4;//结果会报错 //System.out.println(b);//结果是报错,可能损失精度
4是一个int型变量,b+4这个表达式,b会自动类型提升为int与4相加,但是最右边的b是一个byte类型的 装不下一个int类型的数
2.强制类型转换:
byte b = 3; b = (byte)(b+4);//强制类型转换, 注意是b+4这个整体转换成byte类型所以b+4要加上括号 System.out.println(b);
3.字符类型转换为数值类型:
System.out.println(‘b‘+4); System.out.println((char)(‘b‘+4));//字符类型可以跟数字类型进行强制类型转换
4.其他类型之间的转换:
所有整型数据类型都能向float或double自动转换,反之必须强制转换
字符类型可向int、long、float、double自动转换,反之必须强制转换
字符类型转换为int类型自动进行转换(字符类型和int类型运算结果是int类型),转换为byte类型必须强制转换
布尔类型不能与任何其他数据类型转换
强制类型转换的格式为:(目标数据类型)变量名或表达式
long longVar = 12345;//int类型常量赋值给长整型变量longVar,自动转换 double doubleVar = 1.2f;//float类型常量自动转换为double并赋值 float c = 584658481548l;//float表示数的范围比long表示数的范围大,自动转换 // 超出字节类型的表示范围,结果就不能正确的存储该变量的值 //只有在不超过该变量类型的存储范围才可以正确的将该变量转换成指定的类型并将正确值赋值给该变量 byte byteVar = (byte)286; System.out.println(byteVar); int intVar = (int)57484684684L; float floatVar = (float)1.2;//1.2默认是double类型的常量。必须强制转换为float型才能赋值
原文地址:http://www.cnblogs.com/LO-ME/p/3530430.html