回答
编程的 “常识” 是x += y
是x = x + y
等效的速记符号。只要x
和y
属于同一类型(例如,两者均为int
s),您可以认为这两个语句是等价的。
但是,在Java中,x += y
不是一般与x = x + y
相同。
如果x
和y
属于不同类型,则由于语言规则,两种语句的行为不同。例如,让我们x == 0
(int)和y == 1.1
(双):
int x = 0;
x += 1.1; // just fine; hidden cast, x == 1 after assignment
x = x + 1.1; // won't compile! 'cannot convert from double to int'
+=
执行隐式转换,而对于+
你需要明确地投下第二个操作数,否则,你会得到一个编译错误。从约书亚布洛赫的Java的谜题
报价:
(...)复合赋值表达式自动转换的 的结果,他们在他们的 左侧进行到变量的类型计算。如果结果的类型与变量 的类型相同,则演员阵列不起作用。但是,如果结果的类型比变量的类型宽,则化合物 赋值运算符执行无声缩小基元 转换[JLS 5.1.3]。
+1,它必须执行BEFORE赋值。 –
此外,如果'x'是一个更复杂的表达式(比如数组或字段访问)而不是单个变量,那么它的组件表达式现在只被计算一次而不是两次。 –
我所有的教授都说谎:O –
devtop += Math.pow(x[i] - mean, 2);
会增加操作的Math.pow(x[i] - mean, 2)
的结果向devtop
变量。
一个更简单的例子:
int devtop = 2;
devtop += 3; // devtop now equals 5
devtop += Math.pow(x[i] - mean, 2);
Math.pow(x[i] - mean, 2)
添加到devtop
。
这是assignment operators之一。取值为x
,将其加0.1,然后将(x + 0.1)的结果存回x
。
所以:
double x = 1.3;
x += 0.1; // sets 'x' to 1.4
它的功能相同,但短于:
double x = 1.3;
x = x + 0.1;
注意:在做浮点运算,事情don't always work the way you think they will。
x += y
是x = x + y
x -= y
是x = x - y
x *= y
是x = x * y
x /= y
是x = x/y
x %= y
x = x % y
是x ^= y
是x = x^y
x &= y
是x = x & y
x |= y
是x = x | y
等等...
怎么样= +?它编译,但什么都不做 – kommradHomer
@kommradHomer'x = + y'等价于'x = y'。 –
@kommradHomer'x = + y'是'x = 0 + y' –
- 1. | =运算符在Java中做什么?
- 2. Java中的“+”运算符是做什么的?
- 3. “+ =”运算符是做什么的?
- 4. HAML - “!=”运算符是做什么的?
- 5. php运算符“ - =”是做什么的?
- 6. ^运算符是做什么的?
- 7. =>运算符是做什么的?
- 8. '&='和'=&'运算符是做什么的?
- 9. - =运算符是做什么的?
- 10. ==〜运算符是做什么的?
- 11. ^运算符是做什么的?
- 12. 什么是Java中的&=运算符
- 13. 在Java中,箭头运算符' - >'是做什么的?
- 14. 什么是Java“= +”运算符?
- 15. 运算符|是什么?对boost :: la中的vec3做些什么?
- 16. perl运算符“|| =”做什么?
- 17. 什么+运算符做CSS
- 18. 逻辑运算符什么都不做的名字是什么?
- 19. 什么是“?”。运算符在C#中做什么?
- 20. //和||是什么?运算符在Perl中做什么?
- 21. Prolog中的运算符` - >`是做什么的?
- 22. C#中的/ =运算符是做什么的?
- 23. Perl中的表示法 - || =运算符是做什么的?
- 24. Rx.NET中的Wait运算符是做什么的?
- 25. 在提供的C#代码中,+ =运算符是做什么的?
- 26. “| =”运算符在C#中做什么?
- 27. +运算符在cout中做什么?
- 28. 运算符`。*`在matlab中做什么?
- 29. '/运算符在MATLAB中做什么?
- 30. 运算符| =在JavaScript中做什么?
看起来像将一个名为x的变量加上0.1 .. – Friek
几乎是一个重复的http://stackoverflow.com/questions/608721/what-is-the-difference-between-double-aa-int-b -and-int-a-double-b – rds