[英]What is the difference between the operators += vs =+
我刚刚意识到我使用的是 =+ 而不是运算符 += 并且我的程序正在做各种奇怪和意想不到的事情。 Eclipse 没有给我任何类型的错误,所以我假设 =+ 是一个合法的运算符,但我的书中没有提到它。
我的问题是 =+ 有什么作用,在什么情况下你会使用它?
一个常见的语法是:
+=
这是加法和赋值运算符,它将右侧表达式添加到左侧变量,然后将结果赋给左侧变量。 例如:
int i = 1;
int j = 2;
i += j;
// Output: 3
System.out.println( i )
一种不太常见的语法是:
=+
通常这写成两个不同的运算符,用空格分隔:
= +
没有空格,它看起来如下:
int i = 1;
int j = 2;
i =+ j;
// Output: 2
System.out.println(i);
写这个的惯用方法是将一元运算符移到右侧:
int i = 1;
int j = 2;
i = +j;
// Output: 2
System.out.println(i);
现在很容易看出i
被分配给j
的正值。 然而, +
是多余的,所以它经常被丢弃,导致i = j
,实际上相当于i = +1 * j
。 相反的是负一元运算符:
int i = 1;
int j = 2;
i = -j;
// Output: -2
System.out.println(i);
在这里, -
是必要的,因为它反转了j
的符号,实际上相当于i = -1 * j
。
有关更多详细信息,请参阅运算符教程。
=+
与赋值运算符=
相同
a =+ b;
相当于
a = (+b);
这与
a = b;
需要强调的重要事实是 Java 中没有=+
赋值运算符。
您只是列出了两个运算符,一个接一个(一个=
然后一个+
)
i =+ j;
就像写i = +j;
.虽然这样看有点时髦,但在考虑减号时,每个人都非常清楚。
i =- j;
与i = -j;
相同i = -j;
正如许多其他答案中提到的,添加和赋值运算符+=
+=
将右操作数添加到左操作数并将其分配给左操作数
=+
为左操作数赋值
实际上说i=j
与i= +j
相同并不完全正确,因为i= +j
将变量类型提升为 int 如果它小于 int,而赋值则不然。 例如:
byte b1 = 2;
short s1 = b; // compiles and s1 equals 2 of type short
short s2 = +b; // Compile error: required type: short, provided int
// Because the result of +b equals 2 of type int
除了与 = 相同之外,没有 =+ 的影响
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.