java如何传递引用
Java 引用传递的实现方式
Java 中所有对象变量的赋值和参数传递本质上是按值传递,但传递的值是对象的引用(即内存地址)。通过以下方式可以模拟类似引用传递的效果:
使用对象成员变量修改 通过传递对象并在方法内部修改其成员变量,实现类似引用传递的效果。例如:
class MyObject {
int value;
}
void modifyObject(MyObject obj) {
obj.value = 100; // 修改对象内部状态
}
使用数组或容器
数组或集合类(如 ArrayList)本身是对象,传递后修改内容会影响原始数据:
void modifyArray(int[] arr) {
arr[0] = 99; // 修改数组元素
}
使用包装类(但需注意局限性)
对于 Integer、Double 等包装类,因其不可变性,需通过重新赋值或使用 AtomicReference:
void modifyWrapper(AtomicReference<Integer> ref) {
ref.set(42); // 原子引用可修改
}
自定义引用持有类 创建专门用于持有引用的辅助类:
class ReferenceHolder<T> {
T ref;
ReferenceHolder(T ref) { this.ref = ref; }
}
void modifyRef(ReferenceHolder<String> holder) {
holder.ref = "new value";
}
注意事项
- 基本类型(
int,double等)严格按值传递,无法直接修改原始值。 - 方法内对对象变量重新赋值(如
obj = new MyObject())不会影响原始引用,仅影响局部变量。 - 对于需要修改外部基本类型的情况,可将其封装为单元素数组或使用
Atomic类。







