自动类型转换与强制类型转换

136 阅读1分钟

基本数据类型之间的运算规则

前提:这里讨论只是7种基本数据类型变量间的运算,不包含boolean。

  1. 自动类型提升:
  • 当容量小的数据类型的变量与容量大的数据类型做运算时,结果自动提升为容量大的数据类型。
  • byte、char、short-->short-->int-->long-->float-->double (这里的容量大小指的是表示数的范围的大小) byte、char、short这三种类型做运算结果为int类型(包括同中类型之间运算也是int类型)

2.强制类型转换:(自动类型提升运算的逆运算)

public class variableTest {
    public static void main(String[] args) {
        
        //强制类型转换 范围大的往范围小的转换
        double d1 = 12.9;
        int i1 = (int) d1;//截断操作
        System.out.println(d1);
        
    }
}

几种易错情况:

package com.csy;

public class variableTest2 {
    public static void main(String[] args) {
        //整形默认是int类型
        long l1 = 1234566;
        System.out.println(l1);

        //编译失败,由上可知整形默认是int型,下面的数超过了int的范围
        //long l2 = 1111111111111111111;

        //编译失败,浮点型默认是double类型,大范围的数据类型往小范围的数据类型需要强转。
        //float f1 = 12.3;
        float f2 = (float) 12.3;

        
        byte b1 = 12 ;
        //这里会报错,应为byte类型和整形相加,整形默认为int类型,计算后结果自动提升为int类型。
        byte b2 = b1 + 1 ;
    }
}