初识JAVA篇-深入理解数组与数组传参

        在此之前,来看看数组类型与基本类型在内存上存放数据的区别。

初识JAVA篇-深入理解数组与数组传参_第1张图片

数组都是对象,基本类型与引用类型的变量名都在栈区上,而基本类型的存放的数据在栈区上,数组的内容存放在堆区上,且数组名是哈希值,不是数组内容,基本数据类型的内容就是赋值给了变量名。

        OK,那我们接着来讲讲使用数组要注意什么。

初识JAVA篇-深入理解数组与数组传参_第2张图片

来观察一下数据在内存的存放位置与关系:

初识JAVA篇-深入理解数组与数组传参_第3张图片

首先array指向数组对象,然后array相当于把地址赋给了array2,所以array2会指向同一个数组对象。接着就可以对数组里面的数据进行修改了。
        OK,继续聊聊,假设原来的array2原先就指向数组对象,然后把array2改变指向会出现什么情况呢?

初识JAVA篇-深入理解数组与数组传参_第4张图片

来观察一下输出:

初识JAVA篇-深入理解数组与数组传参_第5张图片

接着再来看看这两个的数组对象怎么情况:

初识JAVA篇-深入理解数组与数组传参_第6张图片

这就一清二楚了吧,没有人引用就会自动回收。
再补充一下,一个数组对象可以被多个引用;而一个引用只能去引用一个对象。

初识JAVA篇-深入理解数组与数组传参_第7张图片

        接下来我们聊聊数组传参,探讨一下数组怎么传参,怎么使用。

初识JAVA篇-深入理解数组与数组传参_第8张图片

在主方法中调用func1这个方法,然后转入数组名,在func1中再开辟一个新的数组空间,具体实现看一下:

初识JAVA篇-深入理解数组与数组传参_第9张图片

由于func1结束后销毁后,随之它引用的对象也会随之销毁回收,完全不影响实参,OK,这个理解后,再来看看以下这个例子:

初识JAVA篇-深入理解数组与数组传参_第10张图片

输出结果:

初识JAVA篇-深入理解数组与数组传参_第11张图片

通过这个例子我们可以看到,通过传形参,可以改变数组内部的数据。来看看具体实现过程:

初识JAVA篇-深入理解数组与数组传参_第12张图片

小总结一下,数组对象在堆上,而变量名在局部变量,当函数结束,堆上的数组也会结束,数组结束的原因是因为没有人引用它,所以才导致销毁回收。

你可能感兴趣的:(开发语言,java)