不同数据类型的转换有哪些规则?
隐式数据类型转换:从低精度到高精度,即优先级满足byte<short<char<int<long<float<double
,低精度数据在运算时会自动转换成高精度数据。
强制数据类型转换:从高精度到低精度转换。
当类型自动转换时,需要注意以下几点:
- char类型的数据转换为高级类型(如int,long等),会转换为其对应的ASCII码。
-
byte、char、short类型的数据在参与运算时会自动转换为int型,但当使用
+=
运算时,就不会产生类型的转换。
如:short s1 = 1; s1 = s1 + 1;
,由于在运行时会首先将s1转换成int型,因此s1+1的结果为int型,这样编译器会报错,所以正确的写法应该是short s1 = 1; s1 =(short) (s1 + 1);
。但是“+=”情况例外,语句short s1 = 1; s1 += 1;
不会报错。 - 基本数据类型与boolean类型不能相互转换。
char型变量中是否可以存储一个汉字?
在Java语言中,默认使用的Unicode编码方式,即每个字符占用两个字节,因此可以用来存储中文。
String从采用了一种更加灵活的方式,英文字符占用一个字符,中文占两个字符。