【发布时间】:2013-06-16 21:56:06
【问题描述】:
我刚刚意识到我使用 =+ 而不是运算符 += 并且我的程序正在做各种奇怪和意想不到的事情。 Eclipse 没有给我任何类型的错误,所以我认为 =+ 是一个合法的运算符,但我的书中没有提到它。
我的问题是 =+ 如果有什么作用,你会在什么情况下使用它?
【问题讨论】:
我刚刚意识到我使用 =+ 而不是运算符 += 并且我的程序正在做各种奇怪和意想不到的事情。 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。
有关详细信息,请参阅operators tutorial。
【讨论】:
=+ 与赋值运算符= 相同
a =+ b;
等价于
a = (+b);
与
相同a = b;
【讨论】:
要强调的重要事实是,Java 中没有 =+ 赋值运算符。
您只是列出两个运算符,一个接一个(一个=,然后一个+)
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
【讨论】:
=+除了和=一样没有其他作用
【讨论】: