1. Java语言整数型默认为int型,如果要声明成long型,在变量值后面加上L;
如:long l = 99999999999L; long a = 2147483647; //程序的执行过程:先将赋值号后面的数字看做int型的字面值,在将该int型的字面值转化为long型的对象a,因为2147483647正好是int型数据的最大值,所以程序不会报错。
long b = 2147483648;//程序的执行过程如上所示,但是后面的数据超出了int型的最大范围,所以编译不通过。
2. 规则:
如果赋值号后面的字面值本身没有超过前面的数据类型的取值范围,那么可以直接赋值。
如: byte b1 = 10;//后面的10是int型的字面值,本来要进行强制类型转化才能编译通过,但是由于10本身没有超出byte的取值范围,所以可以直接赋值。byte b2 = 127;//可以通过编译;byte b3 = 128;//不能通过编译,因为128本身超出了byte的取值范围。
short、char类型同上面的byte 类型一致。
3. 上面的结论:如果整数没有超出byte、short、char的取值范围,可以直接将这个整数赋值给byte、short、char。
4. 将long类型转换成int型,不能自动类型转换,需要强制类型转换
5.大容量向小容量转换,需要强制类型转换(编译能通过,但是运行阶段可能损失精度)。
图中所示:所有的浮点型的容量都要大于整型的容量,不论占有字节的多少。即float>long,另外short类型和char类型属于同一级。