考虑以下Java代码: `class MyClass { public int x = 5; public void changeX(int newX) { x = newX;} public static void main(String[] args) { MyClass obj1 = new MyClass(); MyClass obj2 = obj1; obj2.changeX(10); System.out.println(obj1.x); System.out.println(obj2.x); }}`。请问这段代码的输出结果是什么?

答案解析

此题考察对象引用和方法调用对对象成员的影响。`MyClass obj1 = new MyClass();` 创建了一个 `MyClass` 的对象,`obj1` 指向该对象。 `MyClass obj2 = obj1;` 使得 `obj2` 指向 `obj1` 所指向的同一对象,而不是创建新的对象。 因此, `obj1` 和 `obj2` 实际上引用的是内存中的同一个对象。调用 `obj2.changeX(10);` 会通过引用修改该对象的 `x` 成员变量,将其值从 5 修改为 10。由于 `obj1` 和 `obj2` 都指向同一对象,因此, `obj1.x` 和 `obj2.x` 都会输出修改后的值10。选项C正确,A,B和D错误的原因在于对引用的理解错误,或者对调用方法的修改作用不理解
正确答案:C
随机推荐
开始刷题