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/8/26 17:01:09 阅读更多 →
Java 基础|函数 (方法) 详解

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

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

2026/8/26 17:01:09 阅读更多 →
小模型 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/8/26 17:01:09 阅读更多 →

最新新闻

八分之一三阶滤波系数优化技巧

八分之一三阶滤波系数优化技巧

摘要:在资源受限的STM32F0等无硬件乘法器MCU上,系数为[1,2,2,3]的三阶FIR滤波器通过整数系数简化乘法、2的幂次分母实现快速移位归一化,以极低计算开销获得确定性滤波效果。本文解析该方案如何在计算效率、资源消耗与滤波性能间取得最佳平衡,成为嵌入式实时信号处理的优化典…

2026/8/26 18:44:22 阅读更多 →
C#中的lock锁

C#中的lock锁

lock 锁详解一、先解释:lock 是什么? lock 是 C# 中用于"多线程同步"的关键字,它保证同一时刻只有一个线程能进入被锁住的代码块。 lock (锁对象) {// 临界区:同一时刻只允许一个线程执行这里 }核心概念:概念…

2026/8/26 18:44:22 阅读更多 →
C++学习笔记(聊天服务器)

C++学习笔记(聊天服务器)

虚函数 虚函数 给基类留一个 “接口空位”,让子类可以替换掉这个函数的实现;调用的时候,自动跑子类的代码,而不是基类的。这个行为叫多态。 如果不加virtual:调用哪个函数,看指针 / 引用的类型&#xff0c…

2026/8/26 18:44:22 阅读更多 →
控制 SELinux 文件上下文

控制 SELinux 文件上下文

初始 SELinux 上下文所有资源(如进程、文件和端口)都标有 SELinux 上下文。SELinux 在 /etc/selinux/targeted/contexts/files/ 目录中维护基于文件的文件标签策略数据库。新文件在文件名与现有标签策略匹配时获得默认标签。当新文件的名称与现有标签策略…

2026/8/26 18:44:22 阅读更多 →
MoonBit v0.10.9 版本更新

MoonBit v0.10.9 版本更新

MoonBit v0.10.4版本更新 对应moonc版本: v0.10.9 语言更新with-pattern 现在需要在使用了 with 的分支显示加上括号,便于读者更容易理解 with-pattern 的优先级。可以使用 moon fmt 进行自动迁移: fn main {let a Some("hello")match a {Som…

2026/8/26 18:44:21 阅读更多 →
绍兴近杭但不贵:临杭产业园的土地成本优势观察本

绍兴近杭但不贵:临杭产业园的土地成本优势观察本

位于绍兴诸暨市次坞镇的临杭产业园,近年来因其独特的区位条件与土地成本优势,逐渐进入杭州及周边地区制造型企业的选址视野。该园区坐落于诸暨北大门次坞镇,地处G60科创走廊与杭绍甬一体化发展轴的交汇点。距杭州主城区约38公里,经…

2026/8/26 18:43:21 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →