需要特别注意的一点是,基础数据类型有八种,但是能够做运算的只有七种,boolean是不能够参加运算的。而运算又是根据从左到右来的,所以一定要注意,不能参杂boolean类型的计算,否则存在错误。
自动类型提升:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型。容量指的是数据的范围大小。
特别的:
-
char,byte和short类型的变量之间进行计算的时候,得出的结果是int类型。
-
计算等式中,如果直接使用了某个整数,那么这个数字都是被认为是int类型进行计算的。
long num = 123; // 这里先是将123认为是int类型,之后通过自动类型提升转换为了long。 long num = 123L; // 这里直接将123认为是long类型了。
-
计算等式中,如果直接使用了某个浮点数,那么这个浮点数是被认为double类型进行计算的。
float num = 1.23; // 这里先将1.23看作double,但是因为自动提升无法将double转换为float,所以会报错。 float num = 1.23F; // 这里直接将1.23看作是float,所以是合理存储的。
所以升级规则:char、byte、short —> int —> long —> float —> double。
强制类型转换:如果需要将容量大的变量类型转换为容量小的变量类型,需要使用强制类型转换。强制类型转换需要使用强转符号(),在()内指明需要转换的目标数据类型。
强制类型转换过程中可能导致精度损失,比如浮点型转为整数,会丢失小数部分。或者转换为小范围的数据类型时,也可能会丢失数据。