数据类型根据占用存储空间的大小分为高低不同的级别,占用空间小的级别低,占用空间大的级别高,隐式类型转换(又称自动类型转换)遵循由低级到高级转换的规则。当满足以下条件是会发生自动转换:
1.转换前的数据类型与转换后的数据类型兼容。如:short 和int 因为两者都是整形。
2.转换后的数据类型的表示范围比转换前的类型大。如:int的数据表示范围比short大。例如:- byte b=0;
- byte b1 = 3;
- byte b2 = 4;
- b=b1+b2;
- System.out.println(b);
复制代码 b1,b2是变量,数值是变化的,系统无法判断变量值是否在byte(-128~127)范围内
出现以下问题
无论是short+short类型数据还是byte+short类型数据等等.... 只要满足转换前的数据类型与转换后的数据类型兼容,转换后的数据类型的表示范围比转换前的类型大,就会自动转型。
还有以下几种情况包含自动转型- //编译通过。等价于byte = 2;因为右边是常量,其值固定,若在byte型的范围内,编译器会自动完成强制转换;若不在范围内,则编译失败。
- byte b = 1 + 1;
- //编译通过。+=是一个赋值运算符,加和赋值是一步完成的,含有强制类型转换。等价于b = b = (byte)(b+1);
- byte b = 1;
- b = b += 1;
- //编译通过。++是自增运算符→自身加1再赋值给自己,加1和赋值也是一步完成的,且不会改变变量的类型(含有强制类型转换)。
- byte b = 1;
- b = ++b;
复制代码 希望与楼主共同学习
|