一、概述java
1.1 值传递:传递的是值的拷贝;引用传递:传递的是引用的地址值;(Java中统称为值传递)spring
1.2 java中只有 基本数据类型、String s="aa";这2种形式是值传递,其余都为引用传递;数组
二、案例spa
package com.exiuge.mytest; /** * 值传递 基本数据类型 */ public class Test { public static void main(String[] args){ int i=3,j=4; change(i,j); System.out.println(i+":"+j); } public static void change(int i,int j){ int temp=0; temp=i; i=j; j=temp; System.out.println("change:"+i+":"+j); } }
执行结果:code
package com.exiuge.mytest; import com.exiuge.mytest.springioc.User; /** * 值传递 String s="a"; */ public class Test { public static void main(String[] args){ String s="aa"; change(s); System.out.println(s); } public static void change(String s){ s="bb"; } }
执行结果:blog
package com.exiuge.mytest; /** * 引用传递 数组 */ public class Test { public static void main(String[] args){ int[] arr=new int[]{1,2,3,4,5}; change(arr); System.out.println(arr[0]); } public static void change(int[] arr){ arr[0]=12; } }
执行结果:get
12io
package com.exiuge.mytest; import com.exiuge.mytest.springioc.User; /** * 引用传递 自定义数据类型 */ public class Test { public static void main(String[] args){ User user=new User(12,"a"); change(user); System.out.println(user.getAge()); } public static void change(User user){ user.setAge(15); } }
执行结果:class
15test