Java基本数据类型自动转换规则
Java的基本数据类型
Java提供了八种基本类型,包括数字类型(整形、浮点型),字符类型和布尔型。
整型:short, int, long, byte浮点型:float, double字符型:char布尔型:boolean
Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或操作系统的改变而改变。
自动转换规则
布尔型不参与转换转换规则(总): byte/char/short -> int -> long -> float -> double转换规则(详)3.1 操作数之一为double,则另一个操作数先被转化为double,再参与算术运算;
3.2 操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算;
3.3 操作数均不为double或float,当操作数之一为long,则另一操作数先被转换为long,再参与算术运算;
3.4 操作数均不为double、float或long,则操作数先被转换为int,再参与运算。特殊:
4.1 如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。
4.2 当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char类型不发生改变;
几道面试题
精确浮点数计算一般使用哪个类BigDicemal
Java的char能否存汉字
当然可以 Java的char类型占两个字节,存的是Uicode码,其中就包含了汉字。如下代码有什么问题
public static void main(String[] args) {short s1 = 1;/* s1+1运算时会自动转换为int型 赋值给short型会报错 Type mismatch: cannot convert from int to short需要强制类型转换*/s1 = (s1 + 1);/*+= 系统会自动强制将运算结果转换为short类型*/s1 += 1 ;}