关注JLS的词汇

Concern with the vocabulary of JLS

我总是看到这个奇怪的符号 § 但一直不明白 wtf 的意思


还有这里的E1,T,op是什么意思?

来自post:Why don't Java's +=, -=, *=, /= compound assignment operators require casting?

纠正我:

T = 数据类型

op = 运算符

“§”(U+00a7 SECTION SIGN),正如其 unicode 名称所暗示的那样,仅表示 "section"。它用于引用 JLS 中的特定部分。

E1 op= E2 是 "compound assignment expression" 的一种形式。我相信您已经见过复合赋值表达式。它们是这样的:

myCoolVariable += 5
foo *= bar
timeLeft -= 1

在最后一个例子中,timeLeftE1-op1E2E1E2 只是表达式。 T,正如规范所说,具体是 E1 的类型。这里的op指的是=之前的运算符。所以大部分情况下,你的理解是正确的。

规范说像 timeLeft -= 1 这样的表达式(假设 timeLeft 是一个 int)等价于:

timeLeft = (int)((timeLeft) - (1))

除了 timeLeft 只计算一次。