/*
编程person类的定义
*/
public class Perrson {
void show2(int[] arr1){
//arr1=new int[2];
arr1[0] = 200;
System.out.println("show方法中:arr1[0] = " + arr1[0]);
}
public static void main(String[] args){
Perrson at = new Perrson();
int[] arr2 = new int[]{30,40};
at.show2(arr2 );
System.out.println("main方法中:arr2[0] = " + arr2[0]);
// show方法中:arr1[0] = 200
// main方法中:arr2[0] = 200
}
}
这个时候 arr2存储的栈区地址给到方法类中,方法类将她的指向内容改变了,变成了200,因此main里面的内容也已经被修改了。这是堆区的内容被改变了。
/*
编程person类的定义
*/
public class Perrson {
void show2(int[] arr1){
arr1=new int[2];
arr1[0] = 200;
System.out.println("show方法中:arr1[0] = " + arr1[0]);
}
public static void main(String[] args){
Perrson at = new Perrson();
int[] arr2 = new int[]{30,40};
at.show2(arr2 );
System.out.println("main方法中:arr2[0] = " + arr2[0]);
//show方法中:arr1[0] = 200
//main方法中:arr2[0] = 30
}
}
这种情况,arr2的栈区地址给到方法体,方法体但是方法体并未使用他,而是重新选了一个堆区地址来存放200,所以之前的arr2的内容和指向并未改变。