使用不同运算符的字符串操作
String operations using different operators
我用了这个语句
System.out.println("Y"+90+90);
Java 显示的答案是 Y9090
。我了解 Java 是如何进行此操作的。如果使用运算符 +
,则字符串将与文字连接。因此 Y
首先与 90 连接,形成 Y90
作为新字符串,然后 Y90
与 90
连接形成 Y9090
作为结果字符串。
当我把上面的表达式改成:
System.out.println("Y"+90-90);
Java 显示错误。在这一个中,Y
与 90
连接在一起,形成 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)
,可以很好地编译。
如有疑问,请添加括号以表明您的意图。
我用了这个语句
System.out.println("Y"+90+90);
Java 显示的答案是 Y9090
。我了解 Java 是如何进行此操作的。如果使用运算符 +
,则字符串将与文字连接。因此 Y
首先与 90 连接,形成 Y90
作为新字符串,然后 Y90
与 90
连接形成 Y9090
作为结果字符串。
当我把上面的表达式改成:
System.out.println("Y"+90-90);
Java 显示错误。在这一个中,Y
与 90
连接在一起,形成 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)
,可以很好地编译。
如有疑问,请添加括号以表明您的意图。