Java基本数据类型自动转换规则

Java基本数据类型自动转换规则

Java的基本数据类型

Java提供了八种基本类型,包括数字类型(整形、浮点型),字符类型和布尔型。

    整型: short, int, long, byte 浮点型:float, double 字符型:char 布尔型:boolean

Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或操作系统的改变而改变。

自动转换规则

  1. 布尔型不参与转换
  2. 转换规则(总): byte/char/short -> int -> long -> float -> double
  3. 转换规则(详) 3.1 操作数之一为double,则另一个操作数先被转化为double,再参与算术运算; 3.2 操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算; 3.3 操作数均不为double或float,当操作数之一为long,则另一操作数先被转换为long,再参与算术运算; 3.4 操作数均不为double、float或long,则操作数先被转换为int,再参与运算。
  4. 特殊: 4.1 如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。 4.2 当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char类型不发生改变;

几道面试题

  1. 精确浮点数计算一般使用哪个类 BigDicemal
  2. Java的char能否存汉字 当然可以 Java的char类型占两个字节,存的是Uicode码,其中就包含了汉字。
  3. 如下代码有什么问题
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 ;
    }
经验分享 程序员 微信小程序 职场和发展