Java扩展运算符

Java扩展运算符

首先,我们先来看一段代码

int i = 10;

i += 10;

System.out.println(i); // 输出结果为 20

int j = 10;

j = j + 10;

System.out.println(j); // 输出结果为 20

诶,这段代码的 i 和 j 的输出结果都是一样,那是不是说在 Java 中 i += 10 的底层运算原理类似于 i = i + 10 呢?我们先来看下下面的一段代码

byte b = 10;

b += 10;

System.out.println(b); // 输出结果为 20

byte e = 10;

e = e + 10; // 哎呀,这里报错了:java: 不兼容的类型: 从int转换到byte可能会有损失

System.out.println(e);

这是怎么回事呢?为什么 byte 类型的 b 变量使用 += 运算符自加 10 就不会报错,而同为 byte 类型的 e 变量使用 e = e + 10 的方式自加 10 却报错了?

让我们来好好分析一下 e 变量的这一段代码,我们知道,在 Java 中,整数类型的字面量都是默认为 int 类型的,也就是说在 e = e + 10 这行代码中,右边的 10 是一个 int 类型的整数,在与 byte类型的 e 变量做加法运算的时候,e 变量要先自动转换成 int 类型的数据再与 10 进行加法运算最终,赋值符号 = 右边的结果是一个 int 类型的数据,而我们的 e 变量是一个 byte 类型的数据,在进行赋值操作时,是由大容量数据类型转换成小容量数据类型,按理来说要进行强制类型转换,但我们的代码中没有进行强制类型转换,所以出现了相应的报错:java: 不兼容的类型: 从int转换到byte可能会有损失

如此说来,+= 运算符的运算方式与 e = e + 10 的运算方式还是有不一样的地方的,+= 运算符的运算方式类似于下面的这一段代码

byte k = 10;

k = (byte)(k + 10);

System.out.println(k); // 输出结果为 20

所以,Java 中的扩展运算符在进行运算时都是有进行强制类型转换的。

参考材料:Java零基础教程视频(适合Java 0基础,Java初学入门)_哔哩哔哩_bilibili

更多尼泊尔内容

美光 9650 NVMe SSD
38365365.com打不开

美光 9650 NVMe SSD

🗓️ 01-24 👁️ 2581
盘点五种最有前途的新兴传感器
38365365.com打不开

盘点五种最有前途的新兴传感器

🗓️ 07-15 👁️ 854
虾为什么有那么长的胡须
38365365.com打不开

虾为什么有那么长的胡须

🗓️ 07-17 👁️ 3943
王者荣耀服务器关闭时间及维护时间表公布!
365体育亚洲官方登录

王者荣耀服务器关闭时间及维护时间表公布!

🗓️ 06-29 👁️ 6452
现在的蚊帐价格大概在多少钱呢?
365体育亚洲官方登录

现在的蚊帐价格大概在多少钱呢?

🗓️ 12-09 👁️ 2981
什邡酒店,什邡酒店预订查询,什邡宾馆住宿【携程酒店】
365体育亚洲官方登录

什邡酒店,什邡酒店预订查询,什邡宾馆住宿【携程酒店】

🗓️ 01-19 👁️ 9320
接发多少钱一般多少钱
365体育推荐

接发多少钱一般多少钱

🗓️ 06-29 👁️ 9942
拳头注册账号为什么注册不了(解决办法分享)
365体育推荐

拳头注册账号为什么注册不了(解决办法分享)

🗓️ 07-16 👁️ 512
抖音作品发布全攻略:从创意到发布的详细步骤
365体育亚洲官方登录

抖音作品发布全攻略:从创意到发布的详细步骤

🗓️ 11-30 👁️ 3495