我刚刚意识到我正在使用 =+ 而不是运算符 += 并且我的程序正在做各种奇怪和意想不到的事情。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中没有赋值运算符。
您只是列出两个运算符,一个接一个(=
然后是 a +
)
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
=+ 没有其他效果,只是它与 = 相同