数组是引用数据类型,可以作为参数传进方法中使用,在方法中如果对此数组进行了任何修改,即使没有使用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型数组
个人理解,不当之处,请大神赐教
|