以下代码执行后输出结果的第三行是什么? public class Counter { static int count = 0; int id; public Counter() { count++; id = count; } public static void reset() { count = 0; } public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); Counter.reset(); Counter c3 = new Counter(); System.out.println(c1.id); System.out.println(c2.id); System.out.println(c3.id); } }

答案解析

核心考点:static变量的共享特性与构造函数调用顺序。 解题思路分析: 1. static变量count被所有实例共享 2. 创建c1时count从0→1,id=1 3. 创建c2时count从1→2,id=2 4. 调用reset()将count重置为0 5. 创建c3时count从0→1,id=1 6. 输出顺序:c1.id=1, c2.id=2, c3.id=1 选项分析: A. 错误:误认为reset()会影响已存在的实例 B. 正确:c3构造时count从0开始累加 C. 错误:未考虑reset()后的重新计数 D. 错误:错误累加所有实例 易错点:容易忽略static变量重置后新建实例的计数会重新开始,而非继续之前的累计值。
正确答案:B
随机推荐
开始刷题