《Java 学习疑问》---1--- 不同数值型变量 运算时类型转换问题

在这里插入图片描述
上图为课件截图
根据上图意思 不同数值型变量 运算时 容量小的数据类型会自动转为 容量大的数据类型,数据类型容量如下图:
在这里插入图片描述
按照以上解释 个人理解为 byte类型容量 1字节 short 2字节 则两种数据类型运算 结果应该时 short类型数据
但是运行下边代码时 出错

package com.company;

public class Main {
    
    
    public static void main(String[] args) {
    
    
	    byte b = 1;
	    short s = 12;
	    short s2 = b + s; 
        System.out.println(s2);
    }
}

异常:
在这里插入图片描述

原因: 数值型的 数据类型 运算的结果默认是 int类型数据,所以s2 声明为 short 时不行的

数字类型的运算规则:

  • 1、有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。数字类型的从小到大分别是byte、short、int、long、float、double。
  • 2、数字类型的运算中,多个相同类型变量参与的运算,变量要先转换为相对应的数据类型的默认类型(比如两个byte类型的变量相加,会先把两个byte类型的变量转换成默认的int类型之后再计算,得到的结果是int类型)。这种情况适用于变量的数据类型的容量比默认类型的容量小,(比如byte,short,都比int小)
  • 3、byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

猜你喜欢

转载自blog.csdn.net/weixin_41822224/article/details/105072840