当前位置: 首页 > article >正文

Java 数组

Java 数组详细教程数组是 Java 中一种基本且重要的数据结构用于存储固定大小的同类型元素的集合。所有元素在内存中是连续存储的可以通过索引下标快速访问。1. 数组的基本概念元素数组中存储的每一个数据项。长度数组一旦创建其长度元素个数就是固定的不可改变。可以通过数组名.length属性获取。索引用于访问数组元素的序号。Java 数组的索引从0开始到长度 - 1结束。类型数组中所有元素必须是相同的数据类型基本数据类型或引用类型。2. 声明数组声明数组变量告诉编译器数组的名称和它将包含的元素类型。此时并未分配内存空间。语法数据类型[] 数组名; // 推荐方式 // 或 数据类型 数组名[]; // 效果相同但不推荐易与类型声明混淆示例int[] numbers; // 声明一个整型数组引用变量 numbers String[] names; // 声明一个字符串数组引用变量 names double grades[]; // 声明一个双精度浮点型数组引用变量 grades (不推荐写法)3. 创建数组分配内存使用new关键字在堆内存中为数组分配空间并指定长度。语法数组名 new 数据类型[数组长度];也可以将声明和创建合并在一行数据类型[] 数组名 new 数据类型[数组长度];示例numbers new int[5]; // 为 numbers 分配一个能存储 5 个整数的空间 String[] names new String[3]; // 声明并创建一个能存储 3 个字符串引用的数组4. 初始化数组在创建数组的同时为其元素赋初值。方式一创建时指定元素值语法数据类型[] 数组名 new 数据类型[]{元素1, 元素2, ..., 元素n}; // 简写形式 (只能在声明时使用) 数据类型[] 数组名 {元素1, 元素2, ..., 元素n};示例int[] scores new int[]{90, 85, 78, 92, 88}; // 创建并初始化 int[] primes {2, 3, 5, 7, 11}; // 简写形式创建并初始化方式二先创建后赋值使用索引逐个或循环赋值。int[] arr new int[3]; arr[0] 10; // 为第一个元素赋值 arr[1] 20; // 为第二个元素赋值 arr[2] 30; // 为第三个元素赋值5. 访问数组元素通过索引访问数组元素。索引范围是[0, 数组名.length - 1]。语法数组名[索引]示例int firstScore scores[0]; // 访问 scores 数组的第一个元素 names[1] 李四; // 修改 names 数组的第二个元素重要访问超出索引范围的元素会导致ArrayIndexOutOfBoundsException运行时异常。6. 遍历数组遍历数组就是访问数组中的每一个元素。常用方法有使用 for 循环 (索引遍历)for (int i 0; i 数组名.length; i) { // 操作 数组名[i] }示例int[] numbers {5, 10, 15, 20}; for (int i 0; i numbers.length; i) { System.out.println(元素 i : numbers[i]); }使用增强 for 循环 (for-each 循环值遍历)更简洁适用于只需要元素值不需要索引的情况。for (数据类型 元素变量 : 数组名) { // 操作 元素变量 }示例String[] fruits {Apple, Banana, Orange}; for (String fruit : fruits) { System.out.println(fruit); }7. 多维数组Java 支持多维数组最常见的是二维数组可以看作表格。二维数组声明与创建数据类型[][] 数组名; // 声明 数组名 new 数据类型[行数][列数]; // 创建指定列数 // 或 数组名 new 数据类型[行数][]; // 创建不指定列数每行可不同长示例int[][] matrix new int[3][4]; // 3行4列的整型二维数组 String[][] table; // 声明 table new String[2][]; // 2行每行的列数待定 table[0] new String[3]; // 第一行有3列 table[1] new String[2]; // 第二行有2列二维数组初始化int[][] grid { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 3x3 数组二维数组遍历嵌套循环。for (int i 0; i grid.length; i) { // 遍历行 for (int j 0; j grid[i].length; j) { // 遍历当前行的列 System.out.print(grid[i][j] ); } System.out.println(); // 换行 }8. 数组的常见操作与注意事项复制数组System.arraycopy(源数组, 源起始索引, 目标数组, 目标起始索引, 复制长度)Arrays.copyOf(源数组, 新长度)Arrays.copyOfRange(源数组, 起始索引, 结束索引)clone()方法 (数组实现了Cloneable)数组排序Arrays.sort(数组名)数组查找Arrays.binarySearch(数组名, 要查找的值)(要求数组已排序)数组比较Arrays.equals(数组1, 数组2)数组转字符串Arrays.toString(一维数组)/Arrays.deepToString(多维数组)长度固定数组长度一旦确定就不能改变。如果需要动态大小考虑使用ArrayList。内存管理数组是对象存储在堆内存中。数组变量存储的是对数组对象的引用。默认值创建数组后元素会被赋予默认值如int为 0boolean为false引用类型为null。越界检查务必注意索引范围避免ArrayIndexOutOfBoundsException。9. 数组的应用场景存储一组相关的数据如学生成绩、商品列表。实现数据结构如栈、队列的底层实现。作为方法的参数或返回值。用于算法实现如排序、查找。示例代码数组求和与查找最大值public class ArrayExample { public static void main(String[] args) { // 创建并初始化数组 int[] values {12, 5, 23, 8, 17}; // 计算总和 int sum 0; for (int value : values) { sum value; } System.out.println(数组总和: sum); // 查找最大值 int max values[0]; for (int i 1; i values.length; i) { if (values[i] max) { max values[i]; } } System.out.println(最大值: max); // 使用 Arrays 类排序 java.util.Arrays.sort(values); System.out.println(排序后: java.util.Arrays.toString(values)); } }总结Java 数组是存储固定大小同类型元素集合的高效工具。掌握数组的声明、创建、初始化、访问、遍历以及常见操作是 Java 编程的基础。理解其内存结构和特性长度固定、索引从 0 开始对于避免常见错误至关重要。对于需要动态大小的场景应转向集合框架如ArrayList。

相关文章:

Java 数组

Java 数组详细教程数组是 Java 中一种基本且重要的数据结构,用于存储固定大小的同类型元素的集合。所有元素在内存中是连续存储的,可以通过索引(下标)快速访问。1. 数组的基本概念元素: 数组中存储的每一个数据项。长度…...

手把手教你用MATLAB图形放大法找方程根:从画图到定位,解决迭代法初值难题

手把手教你用MATLAB图形放大法找方程根:从画图到定位,解决迭代法初值难题 在数值计算的世界里,寻找方程的根就像在黑暗森林中探险——没有地图的指引,盲目选择起点可能导致算法陷入无限循环或收敛到错误解。而MATLAB的图形放大法&…...

导师认可的AI论文软件榜单(2026 最新实测)

基于学术严谨性、写作效率、功能全面性及用户反馈,以下是2026年最新实测中表现突出的AI论文写作工具权威榜单,按综合使用价值从高到低排列,并附上各工具的核心优势与适用人群。🏆 第一梯队:全流程学术解决方案&#xf…...

赛事直播预告|高含金量智能车竞赛,邀你逐梦无人驾驶赛道!

简 介: 第二十一届全国大学生智能汽车竞赛创意组"智慧城市Robotaxi挑战赛"即将启动。作为教育部认可的A类国家级学科竞赛,赛事聚焦纯视觉无人驾驶技术,依托百度多模态能力与边缘AI算力,考验参赛者的视觉、语言、执行融合…...

Go语言云原生开发:构建高可用微服务架构

Go语言云原生开发:构建高可用微服务架构 引言 云原生开发已成为现代应用开发的主流范式,Go语言凭借其轻量级、高性能和出色的并发支持,成为云原生开发的首选语言。本文将深入探讨Go语言在云原生环境中的应用,帮助您构建高可用的微…...

2024年Java开发者必看:这些过时技术可战略性放弃

1. 项目概述:重新审视Java学习的“必选项”最近在技术社区看到一个挺有意思的讨论,标题是“可以不必再学习的Java知识?”。这话题一出,立刻引起了我们这些老Java开发者的共鸣。从业十几年,从Java 5一路跟到现在的Java …...

告别本地图片!用GitHub+PicGo+Typora三件套,打造无缝Markdown写作体验(保姆级避坑指南)

零成本构建云端图床:GitHubPicGoTypora全自动化写作方案 在技术写作和知识管理领域,Markdown已成为事实上的标准格式。然而,当文档中需要插入大量图片时,传统本地存储方式会带来三个致命问题:文档分享时图片丢失、版本…...

保姆级教程:用Qt Designer和stackedWidget快速搭建一个多页面配置工具(Windows/Linux通用)

保姆级教程:用Qt Designer和stackedWidget快速搭建多页面配置工具 每次打开系统设置或安装新软件时,那些整洁的多页面配置界面总让人眼前一亮。作为开发者,你是否想过自己也能轻松打造这样的界面?今天我们就用Qt的stackedWidget控…...

别再为Gurobi学术许可发愁了!手把手教你从申请到激活(附学信网报告攻略)

Gurobi学术许可全流程实战指南:从申请到Python集成 第一次接触Gurobi优化求解器时,我被它强大的性能所吸引,但随即陷入了学术许可申请的迷茫中。和许多研究生同学一样,我在学信网报告下载、邮件沟通、命令行激活等环节屡屡碰壁。本…...

避坑指南:展锐平台Camera驱动移植中那些容易出错的配置项(以OV08A10为例)

展锐平台Camera驱动移植实战:OV08A10关键配置避坑手册 当你在展锐平台上移植OV08A10摄像头驱动时,是否遇到过这样的场景:所有配置看似正确,但摄像头就是无法正常工作?预览黑屏、图像异常或设备根本无法识别传感器——这…...

【条件对抗生成网络】从理论到实践:CGAN如何实现可控图像生成

1. 条件对抗生成网络(CGAN)是什么? 想象一下,你正在教一个小朋友画画。普通GAN(生成对抗网络)就像让小朋友随意涂鸦,画出来的内容完全随机;而CGAN则像是你给小朋友一个明确的主题&am…...

在Taotoken平台观测不同模型API调用的延迟与用量数据实践

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken平台观测不同模型API调用的延迟与用量数据实践 当你在一个项目中集成了多个大模型,并希望通过Taotoken的统一…...

2026年京东云OpenClaw/Hermes Agent配置Token Plan集成详细攻略

2026年京东云OpenClaw/Hermes Agent配置Token Plan集成详细攻略。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

STM32图像识别实战:从传统CV到TinyML的边缘AI部署

1. 项目概述:当STM32遇上图像识别在嵌入式开发领域,STM32系列微控制器因其出色的性能、丰富的外设和极高的性价比,早已成为工程师和爱好者的“瑞士军刀”。从简单的LED闪烁到复杂的电机控制、通信协议栈,STM32几乎无所不能。但提到…...

从零打造专属显示器:面板、驱动板与外壳的实战选型指南

1. 为什么选择DIY显示器? 最近两年,显示器市场出现了不少高性价比的产品,但作为一个喜欢折腾的极客,我总觉得市面上的显示器少了点什么。要么是接口不够用,要么是外观太普通,要么就是某些参数达不到我的要求…...

语义搜索实战:从关键词到向量检索

本文面向:想深入理解语义搜索实现原理的开发者。 预计阅读时间:10 分钟 关键词搜索已经够用了?试试搜"怎么解决数据库死锁"——你可能漏掉所有标题写"SQLite WAL mode"、"并发写入冲突"的笔记。语义搜索能跨越…...

Stateflow实战:构建LKA系统状态机的模块化建模与数据管理

1. 从零理解LKA系统与Stateflow建模 第一次接触车道保持辅助系统(LKA)时,我盯着那个能在高速上自动修正方向的方向盘看了半天。这玩意儿到底怎么判断什么时候该介入?后来才知道,核心就是藏在控制器里的状态机逻辑。Sta…...

【Perplexity环境新闻搜索实战指南】:20年老炮亲授3大避坑法则与实时情报提纯术

更多请点击: https://intelliparadigm.com 第一章:Perplexity环境新闻搜索实战指南导论 Perplexity 是一款以实时、可信与上下文感知为设计核心的 AI 搜索工具,其底层融合了多源新闻 API、语义检索模型及动态引用验证机制,特别适…...

用Midas Civil搞定箱梁桥抗倾覆验算:从规范解读到多支座工况的实操避坑

用Midas Civil实现箱梁桥抗倾覆验算的工程实践指南 箱梁桥作为现代交通基础设施的重要组成部分,其抗倾覆稳定性直接关系到桥梁运营安全。2018版《公路钢混及预混桥涵设计规范》(JTG 3362-2018)首次系统性地提出了抗倾覆验算要求,…...

Excel MCP Server终极指南:5步实现无Excel环境下的Excel文件操作

Excel MCP Server终极指南:5步实现无Excel环境下的Excel文件操作 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server Excel MCP Server是一个基…...

时间序列预测损失函数全解析:从MSE到分位数损失的选择指南

1. 项目概述:为什么时间序列预测的损失函数值得深究?做时间序列预测,无论是金融市场的股价波动、电商平台的销量起伏,还是工业设备的传感器读数,我们最终都要面对一个核心问题:如何衡量模型预测得好不好&am…...

编写同城公益捐书物资登记流转程序,统计闲置书籍物资,对接公益捐赠渠道。

一个完全去营销化、偏工程与社会创新视角的 Python 示例项目,定位为创新与创业实验课程原型,不绑定任何公益平台、不引导捐赠渠道、不涉及任何机构背书,仅作为物资登记与流转建模工具。 同城公益捐书物资登记流转程序 ——基于物资生命周期管…...

别再只怪外力了!手把手教你用砂纸“解剖”MLCC,排查电容失效真凶(附打磨实操图)

低成本破解MLCC失效之谜:砂纸打磨法的实战指南 当产线上突然出现大批量MLCC失效时,硬件工程师们常常陷入两难——既没有价值百万的金相显微镜,也无法承受将样品送往专业实验室的高昂成本和时间延误。这时,一套简单粗暴却行之有效的…...

开发雨天居家室内活动推荐程序,根据人数年龄自动生成雨天居家休闲创意活动。

一个完全去营销化、偏工程与创业实验视角的 Python 示例项目,定位为课程级 MVP 原型,不绑定任何平台、不推荐商品、不引导消费。雨天居家室内活动推荐程序——基于人数与年龄的规则推荐系统实验一、实际应用场景描述在下雨天气,家庭或室友常面…...

如何在Windows上轻松安装安卓应用:APK-Installer完整指南

如何在Windows上轻松安装安卓应用:APK-Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直接运行安卓应用&am…...

EMD vs NEMD:分子动力学算热导率,新手到底该选哪个?

EMD与NEMD方法实战指南:如何为你的热导率计算选择最佳方案 在纳米材料和新型功能材料的研究中,热导率的精确计算是理解材料热输运性能的关键。面对平衡态分子动力学(EMD)和非平衡态分子动力学(NEMD)两种主流方法,许多研究者常常陷入选择困境。…...

当A*算法遇上真实山地DEM:一份给无人机/机器人路径规划者的Python避坑指南

当A*算法遇上真实山地DEM:无人机路径规划的Python实战与优化 山地路径规划的独特挑战 在无人机和机器人导航领域,山地地形带来了传统路径规划算法难以应对的复杂性。与平坦城市环境不同,山地DEM(数字高程模型)数据包含…...

推荐几款实测有效的降重工具,要求同时对付查重系统和AIGC检测

毕业季论文两大 “生死关”—— 知网 / 维普 / 格子达等查重标红、AIGC 疑似率超标,已成为无数学生的噩梦。普通降重工具仅能降重复率,改写后仍难逃 AI 检测;AI 写作工具生成内容流畅度高,却自带明显 AI 痕迹,双检极易…...

WSL2下CUDA版本切换实战:从CUDA 12.0降级到11.1,成功安装diff-gaussian-rasterization

WSL2环境下CUDA版本切换与diff-gaussian-rasterization安装全指南 在AI和图形学项目的复现过程中,CUDA版本与依赖库的兼容性问题常常成为开发者的"拦路虎"。最近在复现一篇论文时,我遇到了diff-gaussian-rasterization库因CUDA版本不匹配而无…...

掌握Simscape Electrical电机控制器设计:减少硬件测试成本60%的专业解决方案

掌握Simscape Electrical电机控制器设计:减少硬件测试成本60%的专业解决方案 【免费下载链接】Design-motor-controllers-with-Simscape-Electrical This repository contains MATLAB and Simulink files used in the "How to design motor controllers using …...