Java中的数据类型如下图:
①整形字面量默认被视作int类型。因此,大于2147483647(231-1)的整形字面量需要添加“L”后缀,否则会因为超出int类型的表数范围而报错。
②char类型可以被视为无符号整形,只能用于表示单个字符,取值范围0-65535(216-1)。在Java中使用Unicode字符集作为编码集。
③如果将一个较小的整形字面量/整形字面量表达式/整形字面量和常量混合表达式(结果在byte类型、short类型或char类型的表数范围内)赋给一个byte类型、short类型或char类型的变量,在赋值时会将其自动转换为相应类型的值。
④Java中的浮点数在存储介质中以二进制科学计数法表示,因此当浮点数有效数字位数(二进制)大于该浮点数类型的尾数长度时,该浮点数无法被精确表示。如果需要精确表示一个浮点数,建议使用BigDecimal类。
⑤浮点型字面量默认被视作double类型。如果希望Java把一个浮点型字面量当成float类型处理,应添加“F”后缀。
⑥Java中数值型字面量有4中表示方式:十进制(默认)、二进制、八进制、十六进制。其中二进制以“0b”开头,八进制以“0”开头,十六进制以“0x”开头。需要注意的是,二进制字面量/八进制字面量/十六进制字面量在代码中以补码的形式存在。
⑦无法声明null类型的变量,null是null类型数据唯一的值,且null只能赋给引用数据类型的变量。
⑧当算术表达式中包含多个基本数据类型的数据时,表达式运算结果的数据类型将与表达式中最高等级操作数的数据类型保持一致,且所有byte/short/char类型的数据将会被自动提升为int类型。(前提是算数表达式的操作数中包含变量/算数表达式的操作数全都是变量。如果表达式中的操作数都是字面量,表达式运算结果的数据类型将参考③中定义的规则)。
⑨基本数据类型的数据可以与String类型的数据做连接(加法)运算,运算结果的数据类型为String类型。
基本数据类型的类型转换有两种方式:自动类型转换和强制类型转换
①从左向右可以进行自动类型转换,从右向左必须进行强制类型转换。
②自动类型转换只能跟随箭头方向(byte/short类型的数据不能自动转换成char类型的数据);强制类型转换可以脱离箭头方向(char/byte/short类型的数据能够相互进行强制类型转换)。
③浮点型数据强制转换整形数据时,直接截断小数点后的二进制位;整型数据之间强制转换时,直接抹除高位多余的二进制位。
④如果要实现“基本数据类型数据→String类型数据”的转换,可以通过将基本数据类型值与空字符串做连接运算(即加法运算)实现;如果要实现“String类型数据→基本数据类型数据”的转换,可以通过包装类的“parse(字符串值)”方法实现。