关于对象引用传递,以下代码执行后输出结果是? ```java class Box { int value; Box(int v) { value = v; } } public class Test { static void modify(Box a, Box b) { a.value *= 2; b = new Box(5); } public static void main(String[] args) { Box x = new Box(2); Box y = new Box(3); modify(x, y); System.out.print(x.value + " " + y.value); } } ```
答案解析
核心考点:Java参数传递机制(值传递)与对象引用特性
解题思路分析:
1. 方法参数传递的是引用的副本
2. 修改引用副本指向的对象不会影响原始引用
3. 通过引用修改对象属性会影响原始对象
选项分析:
A正确:x传入modify后其value被改为4,y的引用副本被修改不影响原始y
B错误:混淆对象属性修改与引用重新赋值的区别
C错误:错误认为两个参数都会被修改
D错误:未理解a.value*=2会改变原始对象
易错点提醒:
- 方法内对形参的重新赋值(b=new Box(5))不影响实参
- 通过形参修改对象属性(a.value)会影响实参指向的对象
正确答案:A