【问题标题】:String operations using different operators使用不同运算符的字符串操作
【发布时间】:2019-09-25 21:22:08
【问题描述】:

我用了这个说法

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 而不会产生错误。

【问题讨论】:

标签: java concatenation string-formatting string-concatenation type-promotion


【解决方案1】:

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

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

使用加号和乘数,乘法具有更高的优先级,因此 "Y" + 90 * 90"Y" + (90 * 90),编译得很好。

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

【讨论】:

  • 谢谢...我没想到。以为会有一些规则。
  • @JayeshSonkusare 你是什么意思?有一些规则 - 非常明确的规则。
猜你喜欢
  • 2016-06-30
  • 2015-04-19
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多