还有 E1, T, op 在这里是什么意思?
来自帖子:为什么 Java 的 +=、-=、*=、/= 复合赋值运算符不需要强制转换?
纠正我:
T = 数据类型
op = 运算符
“§”(U+00a7 SECTION SIGN),正如其 unicode 名称所暗示的那样,仅表示“部分”。它用于引用 JLS 中的特定部分。
E1 op= E2是“复合赋值表达式”的一种形式。我相信您已经看过复合赋值表达式。它们是这样的:
myCoolVariable += 5
foo *= bar
timeLeft -= 1
在最后一个例子中,timeLeft是E1,-是op,1是E2。E1并且E2只是表达式。T,正如规范所说,具体是E1. op这里指的是 . 之前的运算符=。所以大多数情况下,你的理解是正确的。
规范是说诸如timeLeft -= 1(假设timeLeft是 an int) 之类的表达式等效于:
timeLeft = (int)((timeLeft) - (1))
除了timeLeft只评估一次。