java的值传递与址传递
问题:在java中方法传参到底是值传递还是址传递?
答:java参数传递问题需要分情况讨论:
1 传递的参数为基本类型,则是值传递;
2 传参为引用类型参数,就是址传递;
1 基本数据类型
案例1:【问:num1的值会不会变? 答:不会】
public static void main(String[] args) { int num1 = 100; //定义变量num1 test1(num1); //把num1,作为参数传给test1方法 System.out.println(num1); } public static int test1(int num1){ return num1 = 200; //在test1方法中,给num1重新赋值 }
基本数据类型作为参数的内存图解:
2 引用类型数据
案例1:【问:num1的值会不会变? 答:会】
public static void main(String[] args) { int [] num1 = {10,11}; //定义数组num1 test1(num1); //把num1地址,作为参数传给test1方法 System.out.println(num1[0]); } public static int test1(int [] num1){ return num1[0] = 200; //在test1方法中,给num1[0]重新赋值 }
引用类型数据作为参数的内存图解: