类型转换(基本类型的值才需要相互转换):
在Java程序中,不同的基本类型的值经常需要进行相互转换。
Java语言所提供的7种数值类型之间可以相互转换,有两种类型转换方式:自动类型转换和强制类型转换。
自动类型转换
Java所有的数值型变量可以相互转换,如果系统支持把某种基本类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换;否则就需要强制转换。
强制类型转换:
如果希望把图3.10中箭头右边的类型转换为左边的类型,则必须进行强制类型转换,强制类型转换的语法格式为:(targetType)value,强制类型转换的运算符是圆括号(())。当进行强制类型转换时,类似于把一个大瓶子里的水倒入一个小瓶子,如果大瓶子里的水不多还好,但如果大瓶子里的水很多,将会引起溢出,从而造成数据丢失,这种转换也称为“ 缩小 转换( NarrowConversion)”。强转有点扯淡,尽量不用。
在通常情况下,字符串不能直接转换为基本类型,但通过基本类型对应的包装类(java8新增)则可以实现把字符串转换成基本类型。
boolean 对 应Boolean、
byte对应Byte、
short对应Short、
int对应Integer、
long对 应Long、
char对应Character、
float对应Float、
double对应Double,
8个包装类都提供了一个parseXxx(String str)静态方法用于将字符串转换成基本类型。
例如,把字符串转换成int类型:
String a = “45”;
Integer b = Integer.parseInt(a);
表达式类型的自动提升:
当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义了如下的自动提升规则。
➢ 所有的byte类型、short类型和char类型将被提升到int类型。
➢ 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。