为什么`+ 1`是Java中的有效表达式?

Pra*_*n M 4 java

以下代码块

class Main {
  public static void main(String[] args) {
    System.out.println( + 1);
  }
}
Run Code Online (Sandbox Code Playgroud)

在java 1.8上编译.

1打印此代码时.

与...相同 System.out.println(+ + 1);

++1无法编译.

+ + "str" 无法编译.

+ + true 无法编译.

所以它看起来只支持int,long和double.

这个表达式对上述数据类型有效的原因是什么?

tal*_*lex 6

这是一元加表达.这只是为了赞美一元减去表达.

只有数字类型支持它,因为对于其他类型它没有任何意义.

++1不是编译因为++是增量表达式并且需要变量或字段作为子表达式.