java如何引用传递
Java 中的引用传递实现方式
Java 中严格来说是值传递,但对于对象类型,传递的是引用的副本(即引用的值)。可以通过以下方式模拟类似引用传递的效果:
使用对象封装
通过将需要修改的变量封装在对象中,传递对象的引用。由于对象是引用类型,修改对象内部状态会影响原始数据。
class Wrapper {
int value;
}
public class Main {
static void modifyValue(Wrapper wrapper) {
wrapper.value = 100;
}
public static void main(String[] args) {
Wrapper w = new Wrapper();
w.value = 50;
modifyValue(w);
System.out.println(w.value); // 输出 100
}
}
使用数组
数组也是对象类型,传递数组引用后修改数组内容会影响原始数据。
public class Main {
static void modifyArray(int[] arr) {
arr[0] = 99;
}
public static void main(String[] args) {
int[] array = {1, 2, 3};
modifyArray(array);
System.out.println(array[0]); // 输出 99
}
}
使用 Atomic 类
对于基本类型,可以使用 AtomicInteger 等原子类包装,实现类似引用传递的效果。
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
static void modifyAtomic(AtomicInteger atomic) {
atomic.set(200);
}
public static void main(String[] args) {
AtomicInteger atomicInt = new AtomicInteger(50);
modifyAtomic(atomicInt);
System.out.println(atomicInt.get()); // 输出 200
}
}
返回修改后的值
对于简单场景,可以通过返回值的方式实现类似效果。
public class Main {
static int modifyAndReturn(int value) {
return value * 2;
}
public static void main(String[] args) {
int num = 10;
num = modifyAndReturn(num);
System.out.println(num); // 输出 20
}
}
注意事项
- Java 中基本类型(int、float 等)是值传递,无法直接实现引用传递
- 对象类型传递的是引用的副本,但通过引用可以修改对象状态
- 上述方法都是通过间接方式模拟引用传递效果







