java如何传地址
在Java中传递地址(即传递引用)可以通过以下几种方式实现,具体取决于操作场景和需求:
直接传递对象引用
Java中对象变量存储的是对象的引用(类似指针),直接传递对象变量即可实现引用传递。方法内对对象的修改会影响原始对象:
class MyClass {
int value;
}
public class Main {
static void modifyObject(MyClass obj) {
obj.value = 100; // 修改会影响原始对象
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.value = 10;
modifyObject(obj);
System.out.println(obj.value); // 输出100
}
}
使用数组
数组在Java中也是对象,传递数组变量即传递引用:
public class Main {
static void modifyArray(int[] arr) {
arr[0] = 99; // 修改会影响原始数组
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
modifyArray(arr);
System.out.println(arr[0]); // 输出99
}
}
通过包装类实现
对于基本类型,可以使用AtomicInteger等包装类模拟引用传递:
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
static void modifyAtomic(AtomicInteger num) {
num.set(50); // 修改会影响原始值
}
public static void main(String[] args) {
AtomicInteger num = new AtomicInteger(10);
modifyAtomic(num);
System.out.println(num.get()); // 输出50
}
}
单元素数组技巧
对于基本类型,可通过单元素数组间接实现引用传递:

public class Main {
static void modifyViaArray(int[] holder) {
holder[0] = 200; // 通过数组元素修改值
}
public static void main(String[] args) {
int[] holder = {30};
modifyViaArray(holder);
System.out.println(holder[0]); // 输出200
}
}
注意事项
- Java严格来说是值传递语言,但对象引用的值传递效果类似地址传递
- 基本类型(int、double等)无法直接传递地址,需通过包装类或数组间接实现
- 方法内对引用变量重新赋值(如
obj = new MyClass())不会影响原始引用






