在程序中已经定义好了数据类型的变量,若是想用另一种数据类型表示时,Java会在下列的条件皆成立时,自动做数据类型的转换:
1、转换前的数据类型与转换后的类型兼容。
2、转换后的数据类型的表示范围比转换前的类型大。
举例来说,若是想将short类型的变量a转换为int类型,由于short与int皆为整数类型,符合上述条件1;而int的表示范围比short大,亦符合条件2。因此Java会自动将原为short类型的变量a转换为int类型。
值得注意的是,类型的转换只限该行语句,并不会影响原先所定义的变量的类型,而且通过自动类型的转换,可以保证数据的精确度,它不会因为转换而损失数据内容。这种类型的转换方式也称为扩大转换。
前面曾经提到过,若是整数的类型为short或byte,为了避免溢出,Java会将表达式中的short和byte类型自动转换成int类型,即可保证其运算结果的正确性,这也是Java所提供的“扩大转换”功能。
以“扩大转换”来看可能比较容易理解——字符与整数是可使用自动类型转换的;整数与浮点数亦是兼容的;但是由于boolean类型只能存放true或flase,与整数及字符是不兼容,因此是不可能做类型的转换。