还有 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
只评估一次。