A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

数组是引用数据类型,可以作为参数传进方法中使用,在方法中如果对此数组进行了任何修改,即使没有使用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型数组


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

评分

参与人数 1技术分 +1 收起 理由
张然龙 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
写的不错 这个版的人都被新版抢走了 呵呵呵 ..顶你一个
回复 使用道具 举报
牛................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马