关注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
在最后一个例子中,timeLeft
是E1
,-
是op
,1
是E2
。 E1
和 E2
只是表达式。 T
,正如规范所说,具体是 E1
的类型。这里的op
指的是=
之前的运算符。所以大部分情况下,你的理解是正确的。
规范说像 timeLeft -= 1
这样的表达式(假设 timeLeft
是一个 int
)等价于:
timeLeft = (int)((timeLeft) - (1))
除了 timeLeft
只计算一次。
我总是看到这个奇怪的符号 § 但一直不明白 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
在最后一个例子中,timeLeft
是E1
,-
是op
,1
是E2
。 E1
和 E2
只是表达式。 T
,正如规范所说,具体是 E1
的类型。这里的op
指的是=
之前的运算符。所以大部分情况下,你的理解是正确的。
规范说像 timeLeft -= 1
这样的表达式(假设 timeLeft
是一个 int
)等价于:
timeLeft = (int)((timeLeft) - (1))
除了 timeLeft
只计算一次。