news 2026/8/2 6:08:24

Java数组:一块连续的内存,装下同类的的瓶子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java数组:一块连续的内存,装下同类的的瓶子

数组是什么?

学完循环之后,紧接着就遇到了数组。说实话,刚开始我有点懵——明明单个变量用着挺顺手的,为啥非要搞个数组出来?直到有一天,老师让我们存50个学生的成绩。用单个变量?score1、score2……写到score50?手都得废掉。数组就是来解决这个问题的——把一堆相同类型的数据整整齐齐地排在一起,用同一个名字,通过下标来区分。打个比方:变量就像一个个独立的盒子,每个盒子有自己的名字;数组就像一排连在一起的储物柜,整体叫一个名字,每个小格子编个号(下标)。

怎么定义一个数组?

最基础的写法:

int[]arr=newint[5];// 一个能装5个整数的数组

这行代码干了三件事:声明了一个数组变量、在内存里划了一块连续的空间、把地址赋给了变量。

还有两种偷懒的写法:

// 方式一:声明时直接赋值int[]arr1={10,20,30,40,50};// 方式二:先声明再初始化int[]arr2;arr2=newint[]{1,3,5,7,9};

踩坑提醒:数组一旦定义,长度就固定了。想改大小?对不起,重新建一个吧。

下标:从0开始,不能越界

数组的下标从0开始,到length-1结束。

int[]arr={10,20,30,40};System.out.println(arr[0]);// 10,第一个元素System.out.println(arr[3]);// 40,最后一个元素System.out.println(arr[4]);

记住一个口诀:数组长度是N,下标范围0到N-1。
length属性可以随时获取数组长度,遍历时用i < arr.length而不是i <= arr.length,能有效避免越界。

遍历数组:两种方式

普通for循环

int[]arr={10,20,30,40,50};for(inti=0;i<arr.length;i++){System.out.println(arr[i]);}

需要用到下标时就选这个,比如要修改某个位置的元素。

增强for循环

for(intnum:arr){System.out.println(num);}

代码更简洁,但只能读不能改。适合只需要查看元素内容的场景。

找最值

找数组里的最大值或最小值,思路很简单——先假设第一个元素就是答案,然后挨个比较,发现有更好的就替换。

int[]arr={20,27,5,3,18,32,16};intmax=arr[0];for(inti=1;i<arr.length;i++){if(arr[i]>max){max=arr[i];}}System.out.println("最大值:"+max);


这个思路在其他地方也能用,比如找第二名、找最小的,套路都一样。

动态扩容:数组不够用了怎么办?

数组定长是个硬伤。实际开发中经常不知道要存多少数据,比如学生管理系统,学生数量是动态变化的。
解决方案:满了就新建一个更大的数组,把原来的数据拷过去。

int[]arr=newint[3];// 存数据的过程中发现满了...arr=Arrays.copyOf(arr,arr.length+3);// 扩容3个位置

冒泡排序

排序是数组操作里的重头戏,冒泡排序是最基础的一种。核心思想:相邻元素两两比较,大的往后“冒”。

int[]arr={20,4,16,32,12,6,18,69,34};for(inti=0;i<arr.length-1;i++){for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}

Arrays.sort(arr)

当然,实际工作中没人手写冒泡,直接用Arrays.sort(arr)一行搞定。但理解排序的思想比记住API更重要。

总结

数组是Java里最基础的数据结构,但千万别因为它简单就轻视。理解数组,本质上是在理解内存的连续分配和下标访问机制,这是后面学集合、学算法的基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/2 6:08:07

MapBox地图样式定制与动态切换实战指南

1. 项目概述&#xff1a;为什么需要加载不同风格的地图&#xff1f; 做地图应用开发&#xff0c;尤其是基于Web的&#xff0c;你肯定遇到过这样的场景&#xff1a;产品经理拿着手机过来&#xff0c;指着某个竞品App说&#xff0c;“你看人家这个地图&#xff0c;黑金风格多酷&a…

作者头像 李华
网站建设 2026/8/2 6:07:28

Arduino实战:Xadow加速度计数据采集、滤波与OLED波形显示

1. 项目概述&#xff1a;从零开始玩转Xadow加速度检测器如果你手头有一块Xadow加速度检测器模块&#xff0c;正琢磨着怎么让它动起来&#xff0c;把那些看不见的加速度数据变成屏幕上跳动的数字或者触发一些好玩的动作&#xff0c;那你来对地方了。这个项目就是带你一步步搞定它…

作者头像 李华
网站建设 2026/8/2 6:06:23

5英寸HDMI屏幕全解析:从硬件原理到多系统适配实战

1. 从一块5英寸HDMI屏幕说起&#xff1a;小身材&#xff0c;大用场最近在捣鼓一个便携式的项目终端&#xff0c;需要一块显示效果清晰、接口通用、即插即用的屏幕。市面上各种开发板配套屏幕琳琅满目&#xff0c;但要么是SPI接口速度慢、驱动复杂&#xff0c;要么是DPI/DSI接口…

作者头像 李华
网站建设 2026/8/2 6:01:19

JSON 又报错了?别再一行行数括号,用这个在线工具先救火

JSON 又报错了&#xff1f;别再一行行数括号&#xff0c;用这个在线工具先救火 工具地址&#xff1a;https://json.share888.top/ 每个写接口的人&#xff0c;都栽过这种跟头 对接文档里甩来一段 JSON&#xff0c;一粘进代码就炸&#xff1a; 缺逗号、多逗号、引号用了中文的…

作者头像 李华
网站建设 2026/8/2 5:57:12

编程入门:从轴对称三角形理解循环控制与算法思维

1. 项目概述&#xff1a;从“轴对称三角形”说起最近在辅导一些编程新手时&#xff0c;发现一个很有意思的现象&#xff1a;很多朋友在接触图形绘制、算法逻辑这类题目时&#xff0c;一看到“轴对称三角形”就觉得头大&#xff0c;感觉既要考虑形状&#xff0c;又要考虑对称&am…

作者头像 李华