有哪位仁兄知道java 中 += 的底层原理吗, 比如类型转换之类等 小弟对原理比较入迷
解决方案 »
- 请教java命令中CP和classpath的区别是什么啊?
- 一道基础题把我难到了!晕`
- 关于frame的显示问题:
- 如何在JTable中按回车键即可直接从一个Cell的编辑状态进入到下一个Cell的编辑状态?
- 不能发表帖子,你不能发这么多可用分
- java gui 问题
- 好像不是中文问题,但是又很怪,帮忙给瞧瞧
- 怎样获取邮箱中的新邮件数???
- 如何比较两个数的大小,并按从小到大的次序输出。如:double d1=23.4;double d2=35.1;
- 一道传智播客的线程部分的作业题,自己做不好,求指导
- java新手的小疑问。。。。。。。。。。。。。。。
- 利用java或者Android开发CF之类的3D游戏,涉及到的技术知识?
int i = 0;
i += 1;
i += 'a';
i += 1.2d;
i += 353534444345345345L;
i += 3.2f;
byte b = 7;
i += b;
i += (byte) 7;
i += (char) 65;
等牛人解释。。
i += expRight;
约等于
i = (int) (i + expRight);
i+=1.2d以及以下的。
首先将该表达式转化以下i=i+1.2d;
就是将1.2d转化成int在与int i相加。
所以结果是int类型的
这个说法不对。不是先把1.2d转化为int再去计算;而是先把右边按常规情况计算完毕,再进行强转,而且这个计算过程,等式左边的变量是直接参与的。比如:
int i = 2;
i *= 1.6d;
结果 i == 3其实就是:
int i = 2;
i = (int) (i * 1.6d);
// 计算过程中,会先升级为double进行运算,得到3.2,最后才强转为3。
from:java language specification15.26.2 Compound Assignment Operators
A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.For example, the following code is correct:
short x = 3;
x += 4.6;and results in x having the value 7 because it is equivalent to:
short x = 3;
x = (short)(x + 4.6);