【发布时间】:2020-07-27 13:46:12
【问题描述】:
还有这里的 E1、T、op 是什么意思?
来自帖子:Why don't Java's +=, -=, *=, /= compound assignment operators require casting?
纠正我:
T = 数据类型
op = 运算符
【问题讨论】:
标签: java operators jls compound-assignment
还有这里的 E1、T、op 是什么意思?
纠正我:
T = 数据类型
op = 运算符
【问题讨论】:
标签: java operators jls compound-assignment
"§" (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 是int)等表达式等同于:
timeLeft = (int)((timeLeft) - (1))
除了timeLeft 只计算一次。
【讨论】: