为什么这不编译

FMC*_*FMC 0 java javac

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

System.out.println(("" + (1--2)));
Run Code Online (Sandbox Code Playgroud)

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

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

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

Cri*_*ips 7

您需要像这样输入:

System.out.println(("" + (1-(-2))))
Run Code Online (Sandbox Code Playgroud)

在这种情况下," - "不被识别为有效运算符,因此导致编译器错误.此外,它将返回3,而不是-1.

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

System.out.println(("" + (1 - -2)))
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用`(1 - -2)`.这些空间足以让编译器理解所需内容. (2认同)
  • ` - `是一个操作员,而不是他想要的操作员 (2认同)