java 如何引用传递
Java 中实现引用传递的方法
Java 中所有对象变量的赋值和参数传递都是按值传递,但传递的值是对象的引用(即内存地址)。因此可以通过以下方式模拟引用传递的效果:
使用对象封装
通过将需要修改的变量封装在对象中,传递对象引用即可间接修改原数据。例如:
class Wrapper {
int value;
}
void modifyValue(Wrapper wrapper) {
wrapper.value = 100;
}
// 调用
Wrapper w = new Wrapper();
w.value = 50;
modifyValue(w);
System.out.println(w.value); // 输出 100
使用数组
数组是对象,传递数组引用可以修改数组内容:
void modifyArray(int[] arr) {
arr[0] = 99;
}
// 调用
int[] array = {1, 2, 3};
modifyArray(array);
System.out.println(array[0]); // 输出 99
使用 Atomic 类
对于基本类型,可以使用 AtomicInteger 等原子类:
import java.util.concurrent.atomic.AtomicInteger;
void modifyAtomic(AtomicInteger atomicInt) {
atomicInt.set(200);
}
// 调用
AtomicInteger atomicInt = new AtomicInteger(50);
modifyAtomic(atomicInt);
System.out.println(atomicInt.get()); // 输出 200
使用集合类
List、Map 等集合类也是对象,传递引用后可以修改内容:
void modifyList(List<String> list) {
list.add("new item");
}
// 调用
List<String> myList = new ArrayList<>();
modifyList(myList);
System.out.println(myList); // 输出 [new item]
注意事项
- Java 没有真正的引用传递(如 C++ 的
&),只能通过传递对象引用来模拟。 - 基本类型(
int、double等)无法直接实现引用传递,必须封装为对象。 - 方法内对引用变量本身重新赋值(如
obj = new Object())不会影响原变量。







