首页 > 编程语言 > 详细

Java中short和int的转换

时间:2020-06-22 22:47:09      阅读:127      评论:0      收藏:0      [点我收藏+]

第一种情况:

short a = 1;
a = a + 1;    // 这一步会报错
System.out.print(a);

编译器会报错,原因如下:

技术分享图片

第二种情况:

short a = 1;
a += 1;
System.out.print(a);

这种情况不会报错。
java语言规范中关于复合赋值的解释是这样的:E1 op= E2等价于
E1=(T)(E1 op E2),这里的T是E1的数据类型,即复合赋值是自带了隐式的强制类型转换的

第三种情况:

short a = 1;
short b = 1;
short c = a + b;

这种情况依然会编译出错,因为Java中存在的类型升级,导致两个short类型的运算也会转换成int进行。

类型升级

在Java中,对基本数据类型做比较或者运算时,如果两边的数据类型不同,在可以比较的前提下会首先进行类型升级

  • 如果任一方为double,则另一方转换为double
    • 否则如果任一方为float,则另一方转换为float
      • 否则如果任一方为long,则另一方转换为long
        • 否则两边都会转换为int

即从高到低分别为double, float, long, int
即使是两个short类型运算,也会转换成int进行,这就是前面第三种情况出现错误的原因。

Java中short和int的转换

原文:https://www.cnblogs.com/zhloong/p/java-short-int-convert.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!