【java】short、byte、char进行运算时的注意点

【java】short、byte、char进行运算时的注意点

先来看以下代码

可以看到两个 short 型变量相加结果却为 int 型,这是为什么呢?

因为 Java 中精度小于 int 的数值运算的时候都回被自动转换为 int 后进行计算。

我们来看下以下几个例子:

例一

short o1 = 1;

byte o2 = 2;

short result = (short) (o1 + o2);

精度小于 int 的数值运算的时候都回被自动转换为 int 后进行计算,(o1+o2)是 int 类型,高位转低位需进行强制转换。

从低到高:byte、short、char ——>int——>long——>float——>double

例二

short s = 1;

s = s + 1; //出错

s += 1; //运行通过

这是因为 (s + 1)会将 s 转换和 1 一样的数据类型(int),再相加,这时候结果就是 int 型,高位转低位需要进行强制转换。正确的方式是 s = (short) s + 1;

而 s+=1 之所以正确,是因为其中有隐含的强制类型转换,Java 语言规范中关于复合赋值的解释是这样的:E1 op=E2 等价于 E1=(T)(E1 op E2),这里的T是E1的数据类型。

相关推荐

中国电信用户每月账单查询时间及方式详解
beat365体育亚洲网页版

中国电信用户每月账单查询时间及方式详解

📅 07-31 👁️ 278
《本草纲目》木部·槐
office365ios版本

《本草纲目》木部·槐

📅 07-20 👁️ 9485
碧之轨迹pc,碧之轨迹列车上有多少乘客 – 素材兔
在线365bet盘口

碧之轨迹pc,碧之轨迹列车上有多少乘客 – 素材兔

📅 08-19 👁️ 4527
天啊,我竟然看到了绝不回缩的纸杯蛋糕!!的详细做法
DNF2025夏日套称号属性一览
beat365体育亚洲网页版

DNF2025夏日套称号属性一览

📅 07-30 👁️ 5096
魔兽世界7.3.5增强萨怎么堆属性 wow7.35增强萨配装属性优先级攻略
毛肚煮多久?完美口感的秘訣大公開,從清洗到烹煮一次掌握!
快手延长收货可以延长几天?什么是延迟发货报备
在线365bet盘口

快手延长收货可以延长几天?什么是延迟发货报备

📅 06-29 👁️ 7074
生活科普
beat365体育亚洲网页版

生活科普

📅 09-29 👁️ 7268