首页 > 编程语言 >为什么Java的 +=, -=, *=, /= 复合赋值运算符不需要将long转换为int?

为什么Java的 +=, -=, *=, /= 复合赋值运算符不需要将long转换为int?

时间:2023-10-22 22:33:54浏览次数:34  
标签:Java int long 运算符 E1 赋值

内容来自 DOC[ https://q.houxu6.top/?s=为什么Java的 +=, -=, *=, /= 复合赋值运算符不需要将long转换为int?](https://q.houxu6.top/?s=为什么Java的 +=, -=, *=, /= 复合赋值运算符不需要将long转换为int?)

直到今天,我认为例如:

i += j;

只是一个 i = i + j; 的快捷方式。

但是如果我们尝试这个:

int i = 5;
long j = 8;

那么 i = i + j; 将无法编译,但 i += j; 可以正常编译。

这意味着实际上 i += j; 是类似于 i = (type of i) (i + j) 这样的快捷方式吗?


与往常一样,这个问题的答案可以在《Java语言规范》(JLS)中找到。在这种情况下,可以参考§15.26.2 复合赋值运算符。摘录如下:

式子 E1 op= E2 等价于 E1 = (T)((E1) op (E2)),其中 TE1 的类型,但只有 E1 会被计算一次。

引用自[§15.26.2]的一个示例:

...以下代码是正确的:

short x = 3;
x += 4.6;

结果导致 x 的值为 7,因为它等同于:

short x = 3;
x = (short)(x + 4.6);

换句话说,你的假设是正确的。

标签:Java,int,long,运算符,E1,赋值
From: https://www.cnblogs.com/xiaomandujia/p/17781299.html

相关文章

  • java异常处理
    空指针异常(NullPointerException)空指针异常是JAVA中最常见的异常之一,当我们尝试使用一个空对象的方法或属性时,就会抛出该异常。为了避免空指针异常,我们可以在使用对象之前进行判空处理,或者使用Optional类来代替可能为空的对象。数组越界异常(ArrayIndexOutOfBoundsException)......
  • java并发线程
    在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(boolon);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行......
  • java复习
    1、Java常用集合及特点?List:ArrayList、LinkedList、Vector、StackSet:LinkedSet、HashSet、TreeSetQueue->Deque->LinkedList。Map:HashMap、LinkedHashMap、TreeMapDictionary->HashTable->Properties。Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,默认长度为10,超......
  • 什么是java集合框架
    Java集合框架是Java编程语言提供的一组类和接口,用于处理和存储数据集合。它提供了各种数据结构和算法,以便开发者能够高效地操作数据,无需自行实现这些数据结构。Java集合框架的主要目标是提供一种通用的、标准的方法来处理和存储不同类型的数据,使开发更加方便和高效。以下是Java集......
  • Java并发
    Java并发基础并发:多个任务在同一时间段内交替执行并行:多个任务在同一时刻同时执行Java线程创建方式继承Thread和实现接口继承Thread类并重写run,之后调用start方法启动线程,注意:调用run只是普通的方法调用,不会新开线程。例如如下匿名类继承Thread。Threadthread=new......
  • 洛谷题解 | AT_abc321_c Primes on Interval
    目录题目翻译题目描述输入格式输出格式样例#1样例输入#1样例输出#1样例#2样例输入#2样例输出#2样例#3样例输入#3样例输出#3题目简化题目思路AC代码题目翻译【题目描述】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能......
  • JAVA项目中的常用的异常处理情况
    在Java项目开发中,异常处理是非常重要的一部分。异常是指在程序运行过程中出现的错误或异常情况,如空指针异常、数组越界异常等。合理处理异常可以提高程序的健壮性和可靠性,保证程序的正常运行。首先在Java中,异常处理的基本原则是“捕获异常、处理异常、抛出异常”。在程序......
  • java异常总结
    JAVA项目中的异常处理在Java项目中,异常处理是非常重要的一部分,它可以帮助我们更好地管理和控制程序的运行流程,提高代码的可读性和可维护性。本文将介绍Java项目中常见的异常处理情况,包括异常的分类、处理方式以及最佳实践。一、Java异常的分类Java异常主要分为两大类:受检查异常......
  • 2023中山市香山杯网络安全大赛 pintu Writeup
    Misc题目名称:pintu题目描述:转换拼接好的图片时在最后加个f题目内容分析:给出4703张黑白图片,然后还有提示是8->10根据提示,很明显在说明进制数,也就是8进制转10进制。因此,根据提示想哪些东西可以转数值看到图片只有黑白,于是将其替换成二进制,并转成字符。根据验证这里是将白......
  • java中使用Graphics绘制图形验证图片,为什么图中的文字没有呈现?
       项目中做了一个图形验证的功能。可选择图形中的文字,想出现的效果如上。图形上有文字。而在实际做的过程中,发到测试环境linux系统上去之后,是下面的情况: 只有图,没有文字!于是问了问度娘,说是字体的原因。项目中使用了linux中没有的字体会导致上图的问题。但我是使用了......