2 l297542579 l297542579 于 2015.06.23 15:34 提问

java运算符+=引出的问题,希望搞明白
 short s = 3;
 s = s + 5;  
 s += 5;  

运算结果是 s = s + 5; 这句话编译错误,因为 s+5后,数值类型强制转换成了int型,
再赋值给一个short变量是,会丢失精度,出现编译错误

但是s += 5; 这个运算过程是怎样的,原理是什么,为什么这个就可以编辑通过呢?

3个回答

mxjk_2e
mxjk_2e   2015.06.23 15:37
已采纳

隐式类型转换可以从小到大自动转,即byte->short->int->long
如果反过来会丢失精度,必须进行显示类型转换

s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int

所以将一个int类型赋给short就会出错,

s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是
s+=1 <=> s = (s的类型)(s+1)

qq_28108539
qq_28108539   2015.06.23 15:39

因为5默认的就是int型。和它作和的也默认int型

u010655288
u010655288   2015.06.23 15:45

s+=运行的底层Heap申请一个区域存放s,在数据区域开劈一个区域存放1,2个内存段被数据被送入到寄存器中进行运算,运算结果被放到heap中,数据区域运算后被自动释放后有GC回收 。
+=应该会进行类型的强制转换!

blueZhangFun
blueZhangFun 其实和上面的一个道理 知识层次更深了
大约 3 年之前 回复
l297542579
l297542579 非常感谢你的回复,但是我不是很明白你所说的内容
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
GL学习笔记(2) - 终于搞明白gluPerspective和gluLookAt的关系了(zz)
文章来源:http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/ 函数原型 gluLookAt(GLdoble eyex,GLdouble eyey,GLdoubleeyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdo
Eclipse转Android Studio的过程中有必要弄明白的一些问题
[目录] 1、问:Eclipse的工程如何导入到AS? 2、问:对于Native层的代码,是如何处理的,在AS上如何编译JNI的代码? 3、问:在AS上开发会和Eclipse一样,卡吗? 4、问:AS存在启动慢的问题吗,有没有Eclipse那种初始化进度一直在0%的状态? 5、问:AS编译比Eclipse或者ant编译快吗? 6、gradle与ant相比,有什么优点? 7、问:AS中如
ERP系统选型必备:搞明白这三个问题就足够了!
对于一家企业来讲,进行信息化建设是非常重要的一项工程,想要企业快速稳定的发展,那么ERP系统无疑是最佳辅助工具。对于ERP系统的选型,是企业决定实施ERP前的一个至关重要的抉择,只有选对了、选准了才能更好的提高企业管理,不然只会适得其反。可面对市面上花花绿绿、千差万别的ERP系统提供商和各类系统软件,企业高层难免会不知所措。 讯商科技专注服装ERP系统13年之久,总结合作客户案例经验得出,企业只要...
SymbolTypeViewer_1_0_0_6
文件下载所需要的符号文件 o summarize, Symbol Type Viewer allows to : download the symbols (pdb) very simply. sail and visualize in a detailed way the types and their members in the form of tree structure easily find the unused areas in the structures (padding). These areas are theoretically usable to put personal data there translate the structures for the C Language (.h) and for IDA script (.idc) of DataRescue (http://www.datarescue.com/idabase/) personalize the formatting: addition of suffix in the names of types, freeze the sizes of structures and members (the pointers become ULONG32 for a 32bit system and UINT64 for a 64bit system) apply searchs of texts or regular expressions do a batch processing by treating all modules met in a directory and its under-directories. For example: C:\Windows;)
医学专家痛批伪科学 “酸碱体质”纯属谬论
 近两年,在出版物和网络中流行着一种"健康新说"---大部分疾病的罪魁祸首都是"酸性体质",这些疾病涵盖了当前几乎所有常见病,如高血压、糖尿病、肿瘤,甚至抑郁症等,因此提倡食用"碱性食物"。     此言论经一些媒体和网络转载,影响了相当一批读者。但《生命时报》记者从肾脏病学、肿瘤学、营养学界权威人士那 <embed src="http://imgs.xinhuanet
python 之路,致那些年,我们依然没搞明白的编码
python 之路,致那些年,我们依然没搞明白的编码 - 金角大王 - 博客园 金角大王等待唐僧的日子 Yesterday, when I was young, There were so many songs that waited to be sung. 博客园 首页 新随笔 联系 订阅管理 随笔-11  文章-49  评论
财经专业学生应该如何学习人工智能?
来源:绿色金融科技 作者:海松老师 本文长度为2525字,建议阅读5分钟 本文为你探讨财经专业学生应该如何学习人工智能。 我读大学的时候专业是自动控制,当时正是人工智能的冬天。有一天我对神经网络产生了兴趣,于是问一个老师该如何学习神经网络。结果老师摇着头说,神经网络上世纪就已经被研究烂了。这个画面至今记忆犹新,常在我脑子里浮现。很多年之后我还是很疑惑:神经网络真的没
AI、机器学习、深度学习几个概念傻傻分不清?一张图让你搞明白!
随着人们对人工智能领域的不断探索和实践,越来越多的概念涌入了我们的生活,本文将对其中最重要的三个概念:人工智能、机器学习和深度学习进行解析,帮你搞清楚它们之间的关系以及这些技术发挥的重要作用。 这三个概念到底是什么关系?人工智能、机器学习、深度学习,这三个概念非常相似,也常常为媒体所混用。但其实它们并不难区分,诞生于不同的科技水平和时代背景下,三个概念的依次包含关系,反映出了人类在人工智能领域...
没有搞明白的问题。
用了很久 java 还是没有明白 static 内部类是个什么概念。class Out{class Inner1{}static class Inner2{}} Inner1 需要通过 Out 的实例构造。Out out = new Out();Out.Inner1 oi1 = out.new Inner1();Inner2 可以通过 Out 的类名构造。O
GL学习笔记(2) - 终于搞明白gluPerspective和gluLookAt的关系了
GL学习笔记(2) - 终于搞明白gluPerspective和gluLookAt的关系了 终于搞明白gluPerspective和gluLookAt的关系了 函数原型 gluLookAt(GLdoble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdo