六条原则
1.对于八种数据类型(byte,int,short,long,float,double,boolean,char),除了boolean类型,之外都可以进行类型转换
2.如果整型的字面量没有超过byte,short,char的取值范围,则int值可以直接赋值给这三种类型的变量
3.小容量向大容量转换为自动类型转换
4.大容量向小容量进行类型转换的时候需要进行强制类型转换,但是如果赋值超过了小容量的取值范围,那么将会出精度损失
5.byte,short,char类型的混合计算,会全部将数据转换成int数据类型,再进行计算
6.进行混合运算的时候,各自先转换成容量最大的数据类型再进行计算
代码示例
public class TypeConversion{
public static void main(String[] args){
byte b1 = 1000;//编译错误,1000超过了byte的取值范围
byte b2 = 20;//可以编译
short s = 1000;//可以编译,byte和short可以直接赋值取值范围内的int类型数据(在java中,整型字面量在int取值范围内,默认为是int类型)
int c = 1000;//可以编译
long d = c;//可以,小容量向大容量转换,自动类型转换
int e = d;//不可以,大容量向小容量转换,需要进行强制转换
int f = 10 / 3;//可以
long g = 10;//可以
//int h = g / 3;/都会转换为long,所以需要强制转换,这边错误
long m = g / 3;//可以
byte x = (byte)g / 3;//编译错误
short y = (short)(g / 3);//可以
short i = 10;//可以
byte j = 5;//可以
short k = i + j;//进行byte,short,char进行混合计算的时候,先转成int类型,此处编译将出现错误,因为编译只能识别错误,无法进行运算,所以会报兼容错误
int n = i + j;//可以
}
}