Java 数组从入门到掌握|一维数组、扩容、排序、二维数组详解
一、引入单个变量只能保存一份数据如果需要操作大量数据就要定义很多独立变量编码十分繁琐。普通变量无法完成批量统一操作。解决方案使用数组。二、一维数组1. 概念一次性分配多个相同数据类型的内存空间可以对这批空间做统一操作。2. 数组声明与分配空间数组声明三种写法推荐第一种//推荐写法 数据类型[] 数组名; //写法二 数据类型 [] 数组名; //写法三C语言风格不推荐 数据类型 数组名[];分配堆内存空间长度代表数组能够存储元素的总个数数组名 new 数据类型[长度];3. 数组使用细节下标索引每个存储空间的编号从 0 开始范围0 ~ 数组长度‑1数组访问//赋值 数组名[下标] 数据; //取值访问 数组名[下标];下标越界异常访问下标超过最大下标编译不报错运行抛出java.lang.ArrayIndexOutOfBoundsException数组下标越界。数组遍历循环逐个访问数组中全部元素一般使用for循环。获取数组长度数组名.length数组元素默认初始值数组一旦创建系统自动给每个元素赋默认值 | 数据类型 | 默认值 | | ---- | ---- | | 整数 (byte/short/int/long)|0| | 浮点 (float/double)|0.0| |char|\u0000空字符 | |boolean|false| | 引用类型 (String、对象等)|null|4. 数组其他定义初始化方式声明同时分配空间数据类型[] 数组名 new 数据类型[长度];声明同时显示初始化方式一数据类型[] 数组名 new 数据类型[]{值1,值2,值3};注意数组长度由大括号内元素个数决定[]中不能写长度。声明同时显示初始化方式二简写数据类型[] 数组名 {值1,值2,值3};注意该写法声明和初始化必须写在同一行不能分开。三、数组内存原理数组在堆内存中占用连续的内存空间。寻址公式首地址 下标 * 对应数据类型字节数栈、堆分工栈存放数组变量数组名保存数组在堆中的首地址。堆存放数组真实元素空间。数组变量互相赋值传递的是堆内存的首地址两个变量指向同一块数组。数组作为函数返回值返回的也是数组堆内存的首地址。四、数组扩容1. 扩容原因数组空间一旦分配完成长度不可修改。原有数组存满想要继续保存数据就需要数组扩容。2. 扩容核心思想创建一个长度更大的新数组通常为原数组 2 倍将旧数组全部元素拷贝到新数组把新数组首地址赋值给旧数组变量覆盖旧地址3. 三种扩容实现方式方式 1手动完成三步手动拷贝循环赋值创建更大长度新数组for 循环遍历原数组把元素逐个拷贝到新数组将新数组地址赋值给原数组变量方式 2System.arraycopy 工具拷贝只完成拷贝逻辑不会自动创建新数组//System.arraycopy(原数组,原数组起始下标,目标数组,目标数组起始下标,拷贝元素个数) System.arraycopy(a,0,b,0,a.length);方式 3Arrays.copyOf最简洁需要导包import java.util.Arrays;//参数1原数组参数2新数组长度 int[] newArr Arrays.copyOf(a,a.length*2);五、可变长参数概念函数接收参数的个数不固定可以动态变化。语法public static 返回值类型 函数名(数据类型...参数名){ }底层原理调用时传入的若干实参会自动封装成对应类型的数组可变参数在函数内部直接当做数组使用。⚠️重要限制一个方法最多只能定义一个可变长参数可变长参数必须放在形参列表的最后位置。六、数组排序排序按照指定规则对数组内元素重新排列。冒泡排序相邻两个元素两两比较如果前大于后就交换每一轮把当前无序区间最大的元素向后移动。支持升序、降序。选择排序每一轮固定一个下标拿该下标元素和后面所有元素比较满足条件就交换每一轮选出无序区间最小升序或者最大元素。JDK 工具类排序底层快速排序import java.util.Arrays; Arrays.sort(数组名);七、二维数组本质一维数组里面存放一维数组。1. 声明与分配空间//声明 数据类型[][] 数组名; //分配空间行数、列数 数组名 new 数据类型[行数][列数];2. 使用细节访问格式数组名[行标][列标]行标、列标全部从 0 开始。二维数组元素默认值和一维数组完全一致。获取行列长度数组名.length; //获取行数 数组名[行标].length; //获取指定行的列数3. 二维数组多种定义方式只指定行数列可以后续分配只允许省略列不能省略行数据类型[][] 数组名; 数组名 new 数据类型[行数][];同时指定行列数据类型[][] 数组名 new 数据类型[行数][列数];初始化方式一数据类型[][] 数组名 new 数据类型[][]{{值1,值2},{值3,值4},{值5,值6}};行数由外层大括号内部{}数量决定每一行的列数由内层{}内部元素决定[][]中不能写行列数字。简写初始化声明和初始化必须同时写数据类型[][] 数组名 {{值1,值2},{值3,值4},{值5,值6}};4. 不规则二维数组每一行拥有的列数不相等。 写法 1int[][] arr; arr new int[3][]; arr[0] new int[2]; arr[1] new int[4]; arr[2] new int[1];写法 2int[][] arr new int[][]{{1,2,3},{4},{5,6},{7}};写法 3 简写int[][] arr {{1,2,3},{4},{5,6},{7}};

相关新闻

化学蚀刻做不锈钢垫片的优势

化学蚀刻做不锈钢垫片的优势

摘要:不锈钢垫片广泛应用于精密电机、半导体装备、液压密封及汽车零部件领域,主要承担间隙补偿、密封隔离、减振定位等功能,垫片边缘质量、平面度与批量成本直接影响整机装配性能。传统冲压、激光切割工艺在超薄不锈钢垫片加工中,…

2026/10/30 19:06:32 阅读更多 →
Java 基础|函数 (方法) 详解

Java 基础|函数 (方法) 详解

一、引入如果程序中大量书写重复代码,会带来以下问题:代码冗余可读性低后期不利于维护解决思路: 把重复的代码只定义一次,给这段代码起名字;后续需要使用时,直接通过名字调用执行。二、函数1. 概念函数是实…

2026/10/22 11:25:58 阅读更多 →
小模型 Agent 闯进安全禁区:27B 本地逆向、$266 越狱平板刷屏 —— AI 应用简报 08.20-08.24

小模型 Agent 闯进安全禁区:27B 本地逆向、$266 越狱平板刷屏 —— AI 应用简报 08.20-08.24

# 小模型 Agent 闯进安全禁区:27B 本地逆向、$266 越狱平板刷屏 —— AI 应用简报 08.20-08.24 核心观点:安全逆向这类"硬骨头"任务第一次被本地小模型成群拿下——能力从云端前沿模型专属,下放到了"开源模型 一张信用卡&quo…

2026/11/6 0:52:41 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/14 5:13:29 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/14 5:13:29 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/14 5:13:29 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/14 5:13:29 阅读更多 →

日新闻

周新闻

月新闻