给定类定义如下:`class Student { public String name; public static int count; public Student(String name) { this.name = name; count++; } public void display() { System.out.println("Name: " + name + ", Count: " + count); } }`,现有以下代码片段: `Student s1 = new Student("Alice"); Student s2 = new Student("Bob"); s1.count = 10; s1.display(); s2.display();`。请问执行这段代码后,屏幕输出的结果是什么?
答案解析
该题考察静态变量的特性以及对象成员访问方式。`count` 是静态变量,属于类所有,所有对象共享同一个 `count` 变量。构造方法中 `count++` 会导致 `count` 的值增加。`s1.count = 10;` 修改的是类变量,而非对象自身的属性,因此,`s1` 和 `s2` 的 `count` 值都被改为 `10`。 但是,`display()` 方法中输出的 `count` 是修改后的值。因此,调用 `s1.display()` 输出 `Name: Alice, Count: 10`。接着,`s2.display()` 输出时, `count` 的值依然是10。 因此输出 `Name: Bob, Count: 10`。选项A正确,B和D错误在于没有理解静态变量在多个对象之间的共享特性,以及在对象层面上访问静态变量会影响所有对象。C错在误认为第二次输出时 count 值会增加。因此,输出中 `count` 的值始终为 10.
正确答案:A