以下代码块
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支持它。
此表达式对以上数据类型有效的原因是什么?
答案 0 :(得分:6)
这是一元加表达式。这里只是为了补充一元减表达。
只有数字类型支持它,因为对于其他类型,它没有任何意义。
++1
无法编译,因为++
是增量表达式,需要变量或字段作为子表达式。
答案 1 :(得分:1)
+1
不是表达式,它是表达肯定的1
的明确方法。另一方面,++1
是变量1
上的预增量表达式,该表达式不存在,以数字开头的变量名也不合法。 + + 1
等同于+(+(1))
。
答案 2 :(得分:1)
由于+
被空格分隔,因此被视为一元运算符
例如
- - 5 => -(-5) => 5
类似地
+ + 5 => +(+5) => 5