为什么“ +1”在Java中是有效的表达式?

时间:2019-01-03 05:52:25

标签: java

以下代码块

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

在Java 1.8上编译。

运行此代码时,将打印1

System.out.println(+ + 1);

但是++1无法编译。

+ + "str"无法编译。

+ + true无法编译。

因此,似乎只有int,long和double支持它。

此表达式对以上数据类型有效的原因是什么?

3 个答案:

答案 0 :(得分:6)

这是一元加表达式。这里只是为了补充一元减表达。

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

++1无法编译,因为++是增量表达式,需要变量或字段作为子表达式。

答案 1 :(得分:1)

+1不是表达式,它是表达肯定的1的明确方法。另一方面,++1是变量1上的预增量表达式,该表达式不存在,以数字开头的变量名也不合法。 + + 1等同于+(+(1))

答案 2 :(得分:1)

由于+被空格分隔,因此被视为一元运算符

例如

- - 5 => -(-5) => 5

类似地

+ + 5 => +(+5) => 5