繁体   English   中英

运算符 += 与 =+ 之间有什么区别

[英]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=ji= +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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM