不是我想要的,但是我想知道为什么一元运算符不能直接在Java值上工作?

如果result++;int result = 0;不起作用,为什么result = 0++;起作用?

我可以在docs中找到的是,一元运算符仅需要一个operand,但是对于操作数没有明确的定义,似乎它可以是变量或值。

最佳答案

不是一元运算符不起作用-例如-(+(-5))很好。

但是++不仅计算值-其目的是增加变量。 0不是变量。

JLS 15.14.2(后缀增量运算符++)


  后缀表达式的结果必须是可转换(第5.1.8节)为数字类型的类型的变量,否则会发生编译时错误。


请注意,这也不只是文字。您不能:

String x = "foo";
x.length()++; // wrong!


同样,因为x.length()未被归类为变量。

但是您可以使用其他一元运算符,例如

String x = "foo";
int y = -x.length(); // Unary - operator... that's fine

关于java - 为什么一元运算符不能直接对Java中的值进行运算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32931558/

10-16 14:59