为什么变量不能在赋值运算符中递增?

时间:2013-03-27 16:44:49

标签: java compiler-construction variable-assignment modulus

作为序言,我在Mint 12x64上使用eclipse 3.7.2

假设您有给定的字段:

tail = 10;
capacity = 10;

现在假设您要执行此语句:

tail++ %= capacity;

为什么声明是非法的?声明含糊不清吗?对我来说,它似乎会按照以下顺序进行评估:

  • tail =模数容量
  • 尾部增加一个

2 个答案:

答案 0 :(得分:6)

表达式tail++的结果是,而不是变量。来自JLS,第15.14.2节:

  

后缀增量表达式的结果不是变量,而是值。

您不能将值分配给变量(或字段)。

答案 1 :(得分:5)

您的示例无法编译的原因是tail++,而不是变量++运算符接受一个变量(然后递增),然后返回,然后尝试将其赋值给。您只能分配给变量,因此编译器错误。如果您想让您的样本有效,可以尝试:

tail %= capacity;
tail++;