为什么这不编译

时间:2017-08-16 22:26:16

标签: java javac

我正在尝试使用Java来理解运算符优先级。根据我所读到的内容,我认为以下代码应该有效:

System.out.println(("" + (1--2)));

我认为应按此顺序进行评估:

  • (1--2)变为3
  • (“”+ 3)变为“3”
  • 的System.out.println( “3”)

所以我希望它打印3但它似乎不是合法代码。有人可以解释一下我的错误吗?

2 个答案:

答案 0 :(得分:7)

你需要输入它:

System.out.println(("" + (1-(-2))))

“ - ”在此实例中未被识别为有效运算符,因此导致编译器错误。此外,它将返回3,而不是-1。

编辑:如上所述,另一种输入方法是在“ - ”之间加一个空格,如下所示:

System.out.println(("" + (1 - -2)))

答案 1 :(得分:3)

Java将--作为递减运算符读取,这意味着它需要附加到变量以获得正确的语法,而不是文字旁边。您可以通过在两个-符号之间添加一个空格来解决此问题,即System.out.println(("" + (1- -2)));