在上一篇数组中我们介绍了引用类型。这一篇通过几个简单的例子加深对引用类型的理解与体会。
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
int[] arr1={1,2,3,4};
arr1[0]=99;
int[] arr2=arr1;
arr2[0]=100;
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
这段代码的输出结果会是什么呢?
那么为什么会有这样的结果,我们画图来研究一下:
从图示我们可以知道,arr1,arr2数组指向的其实是同一块内存,因此修改也是修改同一块地方,自然输出是一样的。这就是引用类型,通过地址找到同一块空间。我们再来看一个例子:
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
int[] arr1={1,2,3,4};
int[] arr2={11,22,33,44};
arr1=arr2;
arr1[0]=1000;
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
这段代码的输出结果如下:
如果能很好的理解上面那个例子,这个例子一定也会很好的理解,我们依然画图来解析这段代码的流程:
此时我们看到两个引用同时指向一个对象,通过其中任何一个引用去修改这个对象的值,另一个引用去访问的时候,也会被改变。