使用不同运算符的字符串操作

String operations using different operators

我用了这个语句

System.out.println("Y"+90+90);

Java 显示的答案是 Y9090。我了解 Java 是如何进行此操作的。如果使用运算符 +,则字符串将与文字连接。因此 Y 首先与 90 连接,形成 Y90 作为新字符串,然后 Y9090 连接形成 Y9090 作为结果字符串。

当我把上面的表达式改成:

System.out.println("Y"+90-90); 

Java 显示错误。在这一个中,Y90 连接在一起,形成 Y90 作为一个新字符串。这个新字符串面对 - 运算符并产生错误。

但是如果我这样写:

System.out.println("Y"+90*90);

显示答案为Y8100

这怎么可能?它应该产生错误,或者 Java 应该为第二个语句产生类似的答案,例如 Y0 而不会产生错误。

对于两个加号,运算符从左到右求值,因此 "Y" + 90 + 90 等于 ("Y" + 90) + 90

加上和减号,它们的优先级相同,也是如此。 "Y" + 90 - 90 等于 ("Y" + 90) - 90。您不能从字符串中减去数字,因此会出现编译错误。

有了加号和乘数,乘法具有更高的优先级,所以 "Y" + 90 * 90"Y" + (90 * 90),可以很好地编译。

如有疑问,请添加括号以表明您的意图。