Java 运算符+;=vs=+;

Java 运算符+;=vs=+;,java,operators,Java,Operators,我刚刚意识到我使用的是=+而不是运算符+=并且我的程序正在做各种奇怪和意想不到的事情。Eclipse没有给我任何类型的错误,所以我假设=+是一个合法的操作符,但在我的书中没有提到这一点 我的问题是,=+如果有什么作用,你会在什么情况下使用它 常见语法是: += 这是添加和赋值运算符,它将右侧表达式添加到左侧变量,然后将结果赋值到左侧变量。例如: byte b1 = 2; short s1 = b; // compiles and s1 equals 2 of type short short

我刚刚意识到我使用的是=+而不是运算符+=并且我的程序正在做各种奇怪和意想不到的事情。Eclipse没有给我任何类型的错误,所以我假设=+是一个合法的操作符,但在我的书中没有提到这一点

我的问题是,=+如果有什么作用,你会在什么情况下使用它

常见语法是:

+=
这是添加和赋值运算符,它将右侧表达式添加到左侧变量,然后将结果赋值到左侧变量。例如:

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
inti=1;
int j=2;
i+=j;
//产出:3
系统输出打印项次(一)
一种不太常见的语法是:

=+
通常,这被写成两个不同的运算符,用空格分隔:

=+
如果没有空间,它看起来如下所示:

inti=1;
int j=2;
i=+j;
//产出:2
系统输出打印LN(i);
编写此命令的惯用方法是将一元运算符移到右侧:

inti=1;
int j=2;
i=+j;
//产出:2
系统输出打印LN(i);
现在很容易看到
i
被分配给
j
的正值。但是,
+
是多余的,因此它经常被删除,导致
i=j
,实际上相当于
i=+1*j
。相反,负一元运算符:

inti=1;
int j=2;
i=-j;
//输出:-2
系统输出打印LN(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
如果变量类型小于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

事实上,假设a=-1;是一条有效的线,我想已经决定a=+1也应该有效,尽管什么都不做。我有时用它来强调一些意图,而不是用答案来寻求帮助;如果您想添加注释,或者只是打开一个新问题,请使用注释。