当前位置: 代码网 > it编程>编程语言>Java > Java中数组与栈和堆之间的关系说明

Java中数组与栈和堆之间的关系说明

2025年08月06日 Java 我要评论
java中数组与栈和堆的关系关于数组的定义这里就不做叙述,因为与c语言并无不同之处。数组的初始化有三种方式:int[ ] array1 = { 1, 2, 3, 4, 5 };int[ ] array

java中数组与栈和堆的关系

关于数组的定义这里就不做叙述,因为与c语言并无不同之处。

数组的初始化有三种方式:

int[ ] array1 = { 1, 2, 3, 4, 5 };
int[ ] array2 = new int[ ] { 1, 2, 3, 4, 5 };
int[ ] array3 = new int[10 ];

第一种和第二种它们两个没有区别,写哪个表示的含义都相同;第三个则类似c语言中的不完全初始化,只是给定了范围,里面的数字编译器默认会给0

关于数组在内存中的存储、上述的语法以及不同的数据类型所代表的默认值,如下图所示:

接下来的图描述了关于两个引用指向同一个对象时的内存栈和堆的分配情况,了解了这些才算是真正理解了数组。(jvm:java虚拟机)

接下来我们来认识下null (空引用)。

在前面基本数据类型的方法的引用我们说过,基本数据类型传参时形参不会影响实参的值;但是今天要讲的引用数据类型的形参可以改变实参的值,先从一道例题来引入这个内容。

问:给定一个数组{ 1, 2,3, 4, 5 },将数组内的元素全部扩大两倍,怎么写?

下面是运行时的编译器的处理过程:

将其放在栈和堆上的表示方法:

那么问题来了,引用数据类型在调用方法时的形参一定会修改实参的值吗?

结论:不一定,看下图:

总结:一个引用,不能指向多个对象。否则有可能不会修改实参值。

遍历数组

还有一种遍历数组的方式:

这里使用了 arrays的tostring 方法,把传入的参数array表示的数组,以字符串的形式进行输出了

例题:给定数组{ 1, 2, 3, 4,   5,6 }求数组中元素的平均值;

接下来是一些编程小技巧

1. 在数组中使用循环时,往往循环的限制条件是数组长度减一(因为是从 0 下标开始) ,所以我们可以直接用 array.length - 1 来表示这个限制条件(length表示长度),如图:

2.我们在c语言时期知道二分查找是只能对于一个有序数组进行查找,那么如果是无序的、乱序的该怎么样进行排序呢,有两种方法:使用 arrays.sort(array); 这个语句进行排序  或者  用循环来弄一个冒泡排序。(这里只讲语句排序)如图:

3.数组拷贝、数组部分拷贝、扩大数组。全部都各自一张图来表示:

使用 from - to 进行扩大(不用专门去写from和to,如果你写的正确,编译器会自动识别上去),取值范围是(   ];  ,例如本图是(1 ,3] 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com