- class Demo
- {
- static int arr[]={56,32,9,5,1};
- static int a=23;//成员变量a
- public static void demo(int a,int[] arr)//这里的a是实参,也是局部变量,跟成员变量a不是同一个
- {
- System.out.println("传入的a的值="+a);
- a=10;//这里改变的是局部变量的a的值,当这个方法执行完后,就在栈内存中释放了
- System.out.println("重新赋值后的a="+a);
- System.out.println("arr的值为"+arr);//arr应该为一个地址值
- System.out.println("数组arr中第一个元素的值arr[0]="+arr[0]);
- arr[0]=10;//arr可以理解为一个int类型的数组变量,它运算时在栈内存中,而它的值就是所指数组在堆内存的地址值,
- System.out.println("重新赋值后的arr[0]="+arr[0]);//这里用arr[0]表示的是堆内存中arr这个数组中第一个元素的值,所以如果它改变,数组中的元素的值就会改变
- }
- public static void main(String[] args)
- {
-
- demo(a,arr);
- System.out.println("a的值="+a);
- System.out.println("arr[0]="+arr[0]);//方法结束后,改变的是堆内存中arr[0]的值
- }
- }
复制代码 结果:
|