自动类型提升
小类型到大类型(byte、char、short --> int --> long --> float --> double):自动提升
a+b:short型+int型,结果为int型
int型又自动类型提升为long型,然后赋值给long型的变量c
强制类型转换
大类型到小类型:强制转换
将long型的变量c强制转换为int型,然后赋值给int型的变量b
注意
小类型+大类型=大类型
整数默认为int型
浮点数默认为double型
类型大小看表示的数的范围,不看占的字节数
char、byte、short之间相加等于int
public class Test1 {
public static void main(String[] args) {
long l1=1234;
System.out.println(l);//123213后没加L,默认为int型,把int型赋值给long型,自动类型提升,没毛病
long l2=12345678901;//123....默认为int型,但是超出int型范围了,报错
float f1=12.3;//12.3没加f,默认为double型,double型赋值给float型,大的往小的转,报错
float f2=(float)12.3;//12.3默认为double型,强制转换成float型,再赋值给float型变量,没毛病
byte b1=12;
byte b2=b1+1;//1默认int型,int+byte=int型,大的往小的转,报错
f1=b1+12.3//12.3默认double型,double+byte=double,大的往小的转,报错
}
}