Java 与之间的差异+;=和=+;在爪哇?

Java 与之间的差异+;=和=+;在爪哇?,java,Java,我对一件小事很好奇。 代码如下: String test = "test"; char[] test2 = {'a', 'i'}; int i=0; test += test2[i] + ""; System.out.println(test); 正如我们所怀疑的那样,输出是“testa”,但当我们将操作数“+=”更改为“=+”时会发生什么?现在输出为“97”,是a字母的ascii码,很简单,但是整个字符串测试发生了什么? 感谢您的建议。..+=A表示增

我对一件小事很好奇。 代码如下:

    String test = "test";
    char[] test2 = {'a', 'i'};
    int i=0;
    test += test2[i] + "";
    System.out.println(test);
正如我们所怀疑的那样,输出是“testa”,但当我们将操作数“+=”更改为“=+”时会发生什么?现在输出为“97”,是a字母的ascii码,很简单,但是整个字符串测试发生了什么?
感谢您的建议。

..+=A
表示增加A.
…=+A
表示分配给正A

如果您没有注意到差异:
a=+b
可以重写为:
a=+b
。没有
=+
运算符。其中,在本例中:
+'a'
被转换为int,因为+运算符。

的“
=+
”版本:

被解析为

test = (+test2[i]) + "";
(其ASCII码,
97
),然后通过与空字符串的串联将其转换为字符串(
“97”
)。最终结果是字符串
“97”

,如下所示:


这就像做
a=-5
,实际上是
a=0-5
,除了这里是
a=+5
或者
a=0+5

+=是一个常见的操作符,你知道它的意思。
另一方面,当你输入=+时,你做一个赋值并将右边转换成整数,得到整数(97)。

是的,它基本上与
=0+A应该添加字符“a”的ASCII代码是97,这解释了OP的输出。啊,我现在明白了。多谢各位^-^
test = (+test2[i]) + "";
int CONST = 75;
int method1 = 5;
int method2 = 5;
method1 += CONST; //Adds the value to method1 variable
method2 =+ CONST; //Sets method2 variable to CONST
System.out.println(method1 + ", " + method2 + ", " + CONST);