不是我想要的,但我想知道为什么一元运算符不能直接处理Java中的值?
如果result++;
int result = 0;
不起作用,result = 0++;
为何有效?
我在docs
中找到的只是一元运算符只需要一个operand
,但是对于一个操作数没有明确的定义,它似乎可以是变量或者值。
答案 0 :(得分:8)
并不是一元运算符不起作用 - 例如 - (+( - 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