java 引用传递例子_java 值传递与引用传递(示例代码)

在java中

值传递:基本数据类型(四类八种)与枚举类型 --- 传递的是值的副本

引用传递:对象是引用传递 ---传递的是对象的引用--底层逻辑也是地址的副本

列:

1 classA{2 int name1 =10;3 int name2 =50;4 }5 public classB{6 public static voidmain(String args[]){7 A a = newA();8 swap(a);9 System.out.prinln(a.name1,a.name2);10

11 }12

13 public static voidswap(A a){14 int temp =a.name1;15 a.name1 =a.name2;16 a.name2 =temp;17

18 }19 }

out:50,10

上面发现name1和name2的值发生了交换,这证明了传递到swap()中的是对象的地址,说明这是引用传递;

例

class A{

int name1 =10;

int name2 =50;

}

public class B{

public static void main(String args[]){

A a = new A();

swap(a);

System.out.prinln(a.name1,a.name2);

}

public static void swap(A a){

a = new A();

int temp = a.name1;

a.name1 = a.name2;

a.name2 = temp;

}

}

out:10,50

我们发现当我们在swap()方法中重新new了一个新对象,那么这样必然·发生在jvm堆内存中开辟了一块新的空间,并将新的空间复制给了dome,其中这个Dome是属于一个局部变量,只是作用于swap()方法之中,在这方法中的值确实是进行了交换,但是在这作用域外的name1,name2的值并没有发生改变;

在java中 值传递:基本数据类型(四类八种)与枚举类型 --- 传递的是值的副本 引用传递:对象是引用传递 ---传递的是对象的引用--底层逻辑也是地址的副本 列: 1 classA{2 int name1 =10;3 int name2 =50;4 }5 public classB{6 public static voidmain(String args[]){7 A a = newA();8 swap(a);9 System.out.prinln(a.name1,a.name2);10 11 }12 13 public static voidswap(A a){14 int temp =a.name1;15 a.name1 =a.name2;16 a.name2 =temp;17 18 }19 } out:50,10 上面发现name1和name2的值发生了交换,这证明了传递到swap()中的是对象的地址,说明这是引用传递; 例 class A{ int name1 =10; int name2 =50; } public class B{ public static void main(String args[]){ A a = new A(); swap(a); System.out.prinln(a.name1,a.name2); } public static void swap(A a){ a = new A(); int temp = a.name1; a.name1 = a.name2; a.name2 = temp; } } out:10,50 我们发现当我们在swap()方法中重新new了一个新对象,那么这样必然·发生在jvm堆内存中开辟了一块新的空间,并将新的空间复制给了dome,其中这个Dome是属于一个局部变量,只是作用于swap()方法之中,在这方法中的值确实是进行了交换,但是在这作用域外的name1,name2的值并没有发生改变;
经验分享 程序员 微信小程序 职场和发展