我正在查看 java 代码片段,而这个片段我无法弄清楚为什么输出是 2?
package com.instanceofjava;
public class A{
static int a = 1111;
static
{
a = a-- - --a;
}
{
a = a++ + ++a;
}
public static void main(String[] args) {
System.out.println(a);
}
}
有人可以解释一下为什么这个代码片段的输出是 2 吗?
最佳答案
由于您没有创建类的实例,因此仅执行静态初始化程序 block (不执行实例初始化程序 block 中的表达式a = a+++++a;
)。
第一个 a
被初始化为 1111(作为 static int a = 1111;
的结果)。
然后执行静态初始化 block 并进行以下赋值:
a = a-- - --a;
a--
递减 a
并返回之前的值 1111。
--a
减少先前减少的值 (1110) 并返回新值 1109。
因此表达式的计算结果为:
a = 1111 - 1109 = 2
关于JAVA片段: Output Explanation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987381/