黑马程序员技术交流社区

标题: 关于数组的引用传递(更容易理解String) [打印本页]

作者: 247033993@qq.co    时间: 2014-5-23 23:17
标题: 关于数组的引用传递(更容易理解String)
数组是引用数据类型,可以作为参数传进方法中使用,在方法中如果对此数组进行了任何修改,即使没有使用return语句,这个修改也将保存下来
01 package com.hbb;
02
03 import java.util.Arrays;
04
05 public class Test4_3_1_ArrayRef {
06
07    
12      public static void main(String[] args) {
13          int[] x={1,5,8,4,3,9};
14          arrayRef1(x);
15          System.out.println(Arrays.toString(x));
16          arrayRef2(x);
17          System.out.println(Arrays.toString(x));
18      }
19      //使用return
20      public static int[] arrayRef1(int[] x) {
21          x[1]=10;
22          return x;
23      }
24      //不使用return
25      public static void arrayRef2(int[] x){
26          x[2]=20;
27      }
28    
29 }

-----------------01 [1, 10, 8, 4, 3, 9]
02 [1, 10, 20, 4, 3, 9]

分析:在栈内存中,原数组变量x将堆内存空间的使用权交给了临时变量x,临时变量x将堆内存中数组的元素进行了修改,即使没有return返回,在方法结束之后,因为局部变量x是临时的,所以这个局部变量x失效,但是在堆内存中这个修改仍然存在。所以数组的引用传递,在局部所做的修改,会被保存,根据这个可以理解String型数组


个人理解,不当之处,请大神赐教

作者: 张然龙    时间: 2014-5-26 18:35
写的不错 这个版的人都被新版抢走了 呵呵呵 ..顶你一个
作者: 唤月    时间: 2014-5-26 18:58
牛................




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