【发布时间】:2023-11-27 09:32:02
【问题描述】:
请解释一下这段代码,我得到的输出是 6,请任何人帮助我。
class A {
static int i=1111;
static {
i=i-- - --i;
}
{
i=i++ + ++i;
}
}
class B extends A {
static {
i=--i - i--;
}
{
i=++i + i++;
}
}
public class Shadow2 {
public static void main(String[] args) {
B b = new B();
System.out.println("Find->" + b.i);
}
}
输出
Find->6
谁能帮我看一下代码
【问题讨论】:
-
使用调试器,您可以在运行时检查每个表达式。
-
@paxdiablo Java 中没有未定义的行为。求值顺序是严格定义的(主要是从左到右),单个语句中多次修改的效果是严格定义的(虽然我不记得它是怎么定义的了)。