值传递和引用传递
值(基本数据类型)在栈内存中
引用(对象)在堆内存中
public class Param {
/*
值传递和引用传递的区别
值传递(值是基本数据类型)
引用传递(引用是对象)
*/
/*
值传递(传到方法中的数值已经和原来的数据没有任何关系了)
*/
public static void test1(int n){
n=2;
System.out.println("方法中n=" + n);
}
/*
引用传递(传到方法中的对象和原对象仍然有联系)
*/
public static void test2(int[]arr){
arr[0]=100;//改变数组对象0的下标元素
System.out.println("arr =" + Arrays.toString(arr));
}
public static void main(String[] args) {
//值传递测试
int n = 1;
test1(n);
System.out.println("外部n="+ n);
//引用传递测试
int[]arr={1,2};
test2(arr);
System.out.println("外部的arr="+Arrays.toString(arr));
//把对象在堆内存的首地址(位置)保存给不同的变量
int[]brr = {100};
int[]crr = brr;
int[]drr = brr;
crr[0] = 200;//改变crr变量保存的数组对象的元素,另外两个变量也跟着改变
System.out.println("brr[0]=" + brr[0]);
System.out.println("crr[0]=" + crr[0]);
System.out.println("drr[0]=" + drr[0]);
}
}