图1 - Java的基本数据类型与转换路径 (图片来源:清华大学 Java自主学习教程 1-7-6)
大家都该懂的基础知识
Java的基本数据类型如下:
char,byte,short,int,long,float,double
值得注意的是,对数据类型转换的不敏感可能会造成代码的安全性下降并可能影响性能。
如图1所示,所需容量小的数据类型可以安全的,隐式的向所需容量大的数据类型转换。实线表示无精度损失,虚线表示可能有精度损失。自动类型转换不用特殊语法。
相反,当所需容量大的数据类型向所需容量小的数据类型转换时,容易出现信息损失,是强制的,不安全的。需要谨慎操作。强制类型转换有特定语法,例子如下:
int foo = 100;
byte foooo = (byte)foo;
.
坑
.
1.当较大类型变量超过了较小类型变量的最大值,Java的处理方式是:较大变量的值 % (2 * 较小变量的最大值)。P.S. %号是取余,不是除法
例如:当一个int为128的变量强制转换为byte时,所得到的结果是:128 % (2 * 127) = -128。
.
2.当一次基础运算中存在多个基础数据类型时,返回的结果的类型为最大的数据类型。
例如:一次运算的结构为:int + long + char,返回值类型为long。若需要int则要强转。