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 ;
}