黑马程序员技术交流社区

标题: 常见数组操作的问题 [打印本页]

作者: bushangkoukou    时间: 2013-5-23 00:38
标题: 常见数组操作的问题
如何理解:

数组操作中的传递参数
        **调用的时候,传递是基本类型的值的时候,形参改变对实参没有任何影响。
        **调用的时候,传递是引用类型的地址值的时候,形参改变对实参有直接影响。

这两句话,可否举例说明?
作者: 神之梦    时间: 2013-5-23 01:27
  1. class  Demo
  2. {
  3.         static int arr[]={56,32,9,5,1};
  4.         static int a=23;//成员变量a
  5.         public static void demo(int a,int[] arr)//这里的a是实参,也是局部变量,跟成员变量a不是同一个
  6.         {       
  7.                 System.out.println("传入的a的值="+a);
  8.                 a=10;//这里改变的是局部变量的a的值,当这个方法执行完后,就在栈内存中释放了
  9.                 System.out.println("重新赋值后的a="+a);

  10.                 System.out.println("arr的值为"+arr);//arr应该为一个地址值
  11.                 System.out.println("数组arr中第一个元素的值arr[0]="+arr[0]);
  12.                 arr[0]=10;//arr可以理解为一个int类型的数组变量,它运算时在栈内存中,而它的值就是所指数组在堆内存的地址值,
  13.                 System.out.println("重新赋值后的arr[0]="+arr[0]);//这里用arr[0]表示的是堆内存中arr这个数组中第一个元素的值,所以如果它改变,数组中的元素的值就会改变


  14.         }
  15.         public static void main(String[] args)
  16.         {
  17.                
  18.                 demo(a,arr);

  19.                 System.out.println("a的值="+a);
  20.                 System.out.println("arr[0]="+arr[0]);//方法结束后,改变的是堆内存中arr[0]的值
  21.         }
  22. }
复制代码
结果:






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2