上图为课件截图
根据上图意思 不同数值型变量 运算时 容量小的数据类型会自动转为 容量大的数据类型,数据类型容量如下图:
按照以上解释 个人理解为 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类型。