黑马程序员技术交流社区
标题:
常见数组操作的问题
[打印本页]
作者:
bushangkoukou
时间:
2013-5-23 00:38
标题:
常见数组操作的问题
如何理解:
数组操作中的传递参数
**调用的时候,传递是基本类型的值的时候,形参改变对实参没有任何影响。
**调用的时候,传递是引用类型的地址值的时候,形参改变对实参有直接影响。
这两句话,可否举例说明?
作者:
神之梦
时间:
2013-5-23 01:27
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]的值
}
}
复制代码
结果:
QQ截图20130523012724.png
(3.35 KB, 下载次数: 0)
下载附件
2013-5-23 01:27 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2