2)数据类型转换的核心认识
明确的
整型数据【值】 : 默认类型为int类型 :例如:12默认为int类型
小数数据 : 默认为double类型 :例如:3.14默认为double类型
大原则
①自动类型转换:小数据类型转大数据类型【存储空间的大小】
byte b = 10 1byte=8bit
short s = b; 2byte=16bit
s short
②强制类型转换:
①大数据类型转小数据类型[存储空间大小]
int i = 10;
byte c = (byte)i;
②相同存储空间不同类型表达值范围不一样[例如:char及short
3)数据转换图例说明
1.在Java中,boolean类型与所有其他7种类型都不能进行转换。(byte short int long float double char)
2.如下7种数据类型,它们之间都可以进行转换,但是可能会存在精度损失或者其他一些变化:
byte short ,char int long float double
1)数据类型过长 和 溢出
byte b = 128;//超出byte范围
long intMax = int最大数(查jdk文档)
2)long float double只要两个操作数中有一个是上面类型的,另一个就会被转换成相应类型,并且结果也是该类型: 例如
int num = 10;
double b = 10.01;
double c = num + b;
System.out.println;
4)char类型向更高长度类型(例如整型)转换时,会转换为对应的ASCII码值,再做其他类型的自动转换
例如:
char c = ‘A’;
int num = 10;
int a = c+num;
System.out.println(a);
需要注意的是:
1.char型具有两个字节,其数值范围是0 ~ 2^16-1,
2.short类型也具有两个字节,其值的范围是-2^15 ~ 2^15-1
这直接导致byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为值范围问题),同时,byte当然可以直接提升到short型。
所以,char 不能和byte short 相互自动转换
5)特例 :只看类型不看值
示例1:
int a = 129;
byte b = (byte)a;//编译器只看容器不看值
System.out.println(b);//结果为-127
示例2:
byte b = 100;//可以自动转换
float f = 1.3;//不能自动转换
int a = 2147483647;
a = a+1;
System.out.println(a); // 结果为 -2147483648