值传递:是将实参的值赋值给形参
引用传递:将实参的值(地址)赋值给形参
故,归根结底来说,java其实就只有值传递这一种方式。
值传递
public static void main(String[] args) {
int a = 10,b =20;
swap(a,b);
//a依旧为10,b为20
}
static void swap(int x, int y){
int t =x;
x = y;
y = t;
}
引用传递(值传递)
public static void main(String[] args) {
int[] a = {10,20,30};
change(a);
//a[1] = 30
//把a的地址值传给变量x
}
static void change(int[] x){
//变量x是数组地址,对该地址内的数据进行修改
x[1] = 30;
}
public static void main(String[] args) {
Integer a = 10,b =20;
swap(a,b);
//a依旧为10,b为20
//把a,b的地址值传给变量x,y
}
static void swap(Integer x, Integer y){
// 只是交换变量x,y指向的地址
//对地址本身的内容并没有修改
Integer t =x;
x = y;
y = t;
}
总结
java其实就只有值传递这一种方式,就是将实参的值赋值给形参



