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

【Java 基础篇】Java 数组使用详解:从零基础到数组专家

在这里插入图片描述

如果你正在学习编程,那么数组是一个不可或缺的重要概念。数组是一种数据结构,用于存储一组相同类型的数据。在 Java 编程中,数组扮演着非常重要的角色,可以帮助你组织、访问和操作数据。在本篇博客中,我们将从零基础开始,深入探讨 Java 中的数组,让你从小白变成数组专家。

什么是数组?

在编程中,数组是一种用来存储多个相同类型数据的数据结构。数组的每个元素都有一个唯一的索引,通过索引可以访问或修改特定位置的元素。数组是一种非常有效的数据结构,适用于各种场景,从存储学生成绩到处理图像像素。

声明和初始化数组

在 Java 中,要使用数组,首先需要声明和初始化它。声明一个数组只是告诉编译器你将要使用一个数组,但并不分配内存空间。初始化数组是为数组分配实际的内存,并为数组的元素赋初值。

声明数组

要声明一个数组,你需要指定数组的类型,后面跟着数组名字和一对方括号 [],例如:

int[] numbers; // 声明一个整数数组

你也可以在声明时为数组分配内存,例如:

int[] numbers = new int[5]; // 声明并分配一个包含 5 个整数的数组

初始化数组

初始化数组是为数组分配内存并赋予初始值。Java 中有几种初始化数组的方式。

直接初始化

你可以在声明数组的同时为数组分配内存并赋值,例如:

int[] numbers = {1, 2, 3, 4, 5}; // 直接初始化一个整数数组

使用循环初始化

你也可以使用循环来初始化数组,例如:

int[] numbers = new int[5]; // 声明一个包含 5 个整数的数组
for (int i = 0; i < 5; i++) {numbers[i] = i + 1;
}

访问数组元素

访问数组元素是指通过数组的索引来获取数组中的值。在 Java 中,数组的索引从 0 开始,因此第一个元素的索引是 0,第二个元素的索引是 1,以此类推。

例如,要访问上面示例中的 numbers 数组的第一个元素,可以使用以下代码:

int firstNumber = numbers[0]; // 获取第一个元素的值,即 1

数组的长度

要获取数组的长度(即数组中元素的个数),可以使用数组的 length 属性,例如:

int length = numbers.length; // 获取数组 numbers 的长度,即 5

遍历数组

遍历数组是指逐个访问数组中的所有元素,通常使用循环来实现。在 Java 中,常用的循环有 for 循环和 foreach 循环。

使用 for 循环遍历数组

使用 for 循环可以遍历数组的所有元素,例如:

int[] numbers = {1, 2, 3, 4, 5};for (int i = 0; i < numbers.length; i++) {System.out.println(numbers[i]); // 输出数组元素
}

使用 foreach 循环遍历数组

Java 5 引入了 foreach 循环,可以更简洁地遍历数组,例如:

int[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) {System.out.println(number); // 输出数组元素
}

foreach 循环适用于遍历整个数组,但不能改变数组元素的值。

数组的常见操作

除了声明、初始化和遍历数组,数组还支持许多常见的操作,如添加元素、删除元素、查找元素等。以下是一些常见的数组操作:

添加元素

要向数组添加元素,需要先创建一个新的数组,然后将原数组的元素复制到新数组中,并在新数组中添加新元素。Java 中的数组大小是固定的,所以添加元素通常需要创建一个新数组。

删除元素

删除数组中的元素通常也需要创建一个新数组,将原数组中不需要删除的元素复制到新数组中。要删除元素,通过找到要删除的元素的索引,然后将其跳过。以下是一个删除数组元素的示例:

int[] numbers = {1, 2, 3, 4, 5};
int elementToRemove = 3; // 要删除的元素int[] newArray = new int[numbers.length - 1];
int newIndex = 0;for (int i = 0; i < numbers.length; i++) {if (numbers[i] != elementToRemove) {newArray[newIndex] = numbers[i];newIndex++;}
}numbers = newArray; // 更新数组为新数组

查找元素

要在数组中查找元素,可以使用循环遍历数组,逐个比较每个元素的值,找到匹配的元素后返回索引或值。以下是一个查找元素的示例:

int[] numbers = {1, 2, 3, 4, 5};
int elementToFind = 3; // 要查找的元素int foundIndex = -1; // 初始化为 -1 表示未找到
for (int i = 0; i < numbers.length; i++) {if (numbers[i] == elementToFind) {foundIndex = i;break; // 找到元素后退出循环}
}if (foundIndex != -1) {System.out.println("找到元素 " + elementToFind + ",索引为 " + foundIndex);
} else {System.out.println("未找到元素 " + elementToFind);
}

多维数组

除了一维数组(包含单个列表的元素),Java 还支持多维数组,即数组的数组。多维数组可以看作是矩阵或表格,通常用于表示二维或更高维的数据结构。

二维数组

二维数组是最常见的多维数组,它可以看作是一个表格,有行和列。在 Java 中,二维数组的声明和初始化如下:

int[][] matrix = new int[3][4]; // 声明一个 3x4 的二维整数数组

要访问二维数组中的元素,需要提供两个索引,一个表示行,一个表示列:

matrix[0][0] = 1; // 设置第一行第一列的值为 1
int value = matrix[1][2]; // 获取第二行第三列的值

多维数组

除了二维数组,Java 还支持更高维度的多维数组。多维数组的声明和初始化方式类似,只需要提供更多的索引即可。

int[][][] threeDimensionalArray = new int[2][3][4]; // 声明一个三维数组

多维数组的访问也需要提供相应数量的索引。

数组的注意事项

在使用数组时,有一些常见的注意事项需要牢记:

  • 数组的大小是固定的,一旦创建,就不能更改。要添加或删除元素,通常需要创建一个新数组。

  • 数组的索引从 0 开始,访问越界的索引会导致运行时错误。

  • 数组可以存储相同类型的元素,例如整数数组只能存储整数。

  • 数组的长度可以使用 length 属性获取,但注意不要与方法混淆。

  • 多维数组可以看作是数组的数组,需要提供多个索引来访问元素。

总结

数组是 Java 编程中的重要概念,可以用来存储和操作多个相同类型的数据。本篇博客从基础开始介绍了数组的声明、初始化、访问、遍历以及常见操作。此外,还介绍了多维数组的概念和使用方法。

希望这篇文章对你理解和使用 Java 数组提供了帮助。无论你是编程初学者还是有一定经验的开发者,掌握数组是编程的重要一步。继续学习和实践,你将能够编写出更复杂和功能强大的程序,成为真正的数组专家!

相关文章:

【Java 基础篇】Java 数组使用详解:从零基础到数组专家

如果你正在学习编程&#xff0c;那么数组是一个不可或缺的重要概念。数组是一种数据结构&#xff0c;用于存储一组相同类型的数据。在 Java 编程中&#xff0c;数组扮演着非常重要的角色&#xff0c;可以帮助你组织、访问和操作数据。在本篇博客中&#xff0c;我们将从零基础开…...

基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作

文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体&#xff0c;注重量化的综合性知识体系。特别是&#xff0c;信息可视化技术手段和方法的运用&#xff0c;可直观的展示主题的研究发展历程、研究现状、研究…...

docker_python-django_uwsgi_nginx_浏览器_网络访问映过程

介绍 1&#xff1a;介绍docker中使用uwsgi服务器启动django 设置了uwsgi的脚本 2&#xff1a;介绍启动uwsgi后&#xff0c;使用本地浏览器去访问这个容器中的端口 3&#xff1a;分别使用了3个ip地址去访问这个服务 1&#xff1a;使用本地连接*2 2&#xff1a;使用windows系统里…...

Python爬取天气数据并进行分析与预测

随着全球气候的不断变化&#xff0c;对于天气数据的获取、分析和预测显得越来越重要。本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫&#xff0c;并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测。 1 、数据源选择 选择可靠丰富的公开API或网站作…...

基础算法-递推算法-学习

现象&#xff1a; 基础算法-递推算法-学习 方法&#xff1a; 这就是一种递推的算法思想。递推思想的核心就是从已知条件出发&#xff0c;逐步推算出问题的解 最常见案例&#xff1a; 一&#xff1a;正向递推案例&#xff1a; 弹力球回弹问题&#xff1a; * 弹力球从100米高…...

L1-056 猜数字(Python实现) 测试点全过

前言&#xff1a; {\color{Blue}前言&#xff1a;} 前言&#xff1a; 本系列题使用的是&#xff0c;“PTA中的团体程序设计天梯赛——练习集”的题库&#xff0c;难度有L1、L2、L3三个等级&#xff0c;分别对应团体程序设计天梯赛的三个难度。更新取决于题目的难度&#xff0c;…...

第 361 场 LeetCode 周赛题解

A 统计对称整数的数目 枚举 x x x class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low; i < high; i) {string s to_string(i);if (s.size() & 1)continue;int s1 0, s2 0;for (int k 0; k < s.size(); k)if …...

07-架构2023版-centos+docker部署Canal 实现多端数据同步

canal 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )canal 解析 binary log 对象(原始为 byte 流)基于日志增量订阅和消费的业务包括 数据库镜…...

过滤器的应用-Filter

过滤器 1.工作原理 2.创建Filter 2.1通过注解的方式实现 //创建一个类&#xff0c;实现Filter接口 WebFilter(urlPatterns "/myfilter") //urlPatterns表示需要拦截的路径 public class MyFilter implements Filter {Overridepublic void doFilter(ServletReques…...

leetcode236. 二叉树的最近公共祖先(java)

二叉树的最近公共祖先 题目描述递归法代码演示 上期经典 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q …...

spacy安装旧版本en_core_web_sm的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

Qt +VTK+Cmake 编译和环境配置(第一篇 采坑)

VTK下载地址&#xff1a;https://vtk.org/download/ cmake下载地址&#xff1a;https://cmake.org/download/ 版本对应方面&#xff0c;如果你的项目对版本没有要求&#xff0c;就不用在意。我就是自己随机搭建的&#xff0c;VTK选择最新版本吧&#xff0c;如果后面其他的库不…...

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南宁师范大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南宁师范大学图书馆...

C++/C# : C#和C++的不同

C#和C是两种不同的编程语言&#xff0c;虽然在某些方面它们具有相似之处&#xff0c;但它们也有一些明显的不同点&#xff0c;如下&#xff1a; C是一种静态类型编程语言&#xff0c;而C#是一种动态类型编程语言。 C允许开发者手动管理内存的分配和释放&#xff0c;但是C#的垃…...

PCL-直通滤波器原理及实验

文章目录 原理使用过程代码实验总结 原理 直通滤波器的作用是过滤在指定维度方向上取值不在给定值域内的点&#xff0c;即点云数据有xyz三维坐标&#xff0c;选择一个方向的维度的数据&#xff0c;设置一个范围&#xff0c;在这个范围中的点云会被保留&#xff0c;不在此范围内…...

数学建模:相关性分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;相关性分析 文章目录 数学建模&#xff1a;相关性分析相关性分析两变量的相关分析PearsonSpearmanKendall tua-b 双变量关系强度测量的指标相关系数的性质代码实现example偏相关分析 相…...

thinkPHP项目搭建

1 宝塔添加站点 &#xff08;1&#xff09;打开命令提示行&#xff0c;输入以下命令&#xff0c;找到hosts文件。 for /f %P in (dir %windir%\WinSxS\hosts /b /s) do copy %P %windir%\System32\drivers\etc & echo %P & Notepad %P &#xff08;2&#xff09;添加域…...

C++中几种处理函数返回值的方式

目录 C中几种处理函数返回值的方式&#xff1a;值返回引用返回指针返回总结 C中几种处理函数返回值的方式&#xff1a; 值返回 函数可以返回一个具体的值&#xff0c;例如整数、浮点数、结构体、类对象等。返回值被复制到函数调用点&#xff0c;在调用点可以直接使用或赋给其…...

跟我学c++中级篇——c++中的Abominable Function Types

一、Abominable Function Types Abominable Function Types,令人讨厌&#xff08;憎恶&#xff09;的函数类型。这个在c的技术点中&#xff0c;很少有人了解。那么什么是Abominable Function Types呢&#xff1f;看下面的例子&#xff1a; using func void(); using func…...

计算机毕设之基于python+django+mysql的影片数据爬取与数据分析(包含源码+文档+部署教程)

影片数据爬取与数据分析分为两个部分&#xff0c;即管理员和用户。该系统是根据用户的实际需求开发的&#xff0c;贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限&#xff0c;其次是用户。管理员一般负责整个系统的运…...

slog正式版来了:Go日志记录新选择!

在大约一年前&#xff0c;我就写下了《slog&#xff1a;Go官方版结构化日志包[1]》一文&#xff0c;文中介绍了Go团队正在设计并计划在下一个Go版本中落地的Go官方结构化日志包&#xff1a;slog[2]。但slog并未如预期在Go 1.20版本[3]中落地&#xff0c;而是在golang.org/x/exp…...

华为静态路由配置实验(超详细讲解+详细命令行)

系列文章目录 华为数通学习&#xff08;7&#xff09; 前言 一&#xff0c;静态路由配置 二&#xff0c;网络地址配置 AR1的配置&#xff1a; AR2的配置&#xff1a; AR3的配置&#xff1a; 三&#xff0c;测试是否连通 AR1的配置: 讲解&#xff1a; AR2的配置&#…...

axios源码学习

1 判断一个对象是否普通对象 Symbol.toStringTag&#xff1a;可以修改Object.prototype.toString.call返回的后缀&#xff0c;普通对象自带该属性&#xff0c;不需要设置&#xff0c;如果设置说明该对象不是普通对象Symbol.iterator&#xff1a;拥有该属性的对象可以使用for o…...

【SpingBoot】详细介绍SpringBoot项目中前端请求到数据库再返回前端的完整数据流转,并用代码实现

在SpringBoot项目中&#xff0c;前端请求到最终返回的完整数据流转一般包括以下几个步骤&#xff1a; 前端发送HTTP请求到后端Controller。 Controller接收到请求后&#xff0c;调用相关Service处理业务逻辑。 Service调用DAO层获取数据。 DAO层访问数据库获取数据。 数据库…...

kubesphere devops使用

一、创建项目 1 创建项目 企业管理员切换到相应企业空间(租户),创建项目&#xff0c;k8s集群会创建一个相同名字的namespace。如下图所示管理员创建一个ipaas-devops项目。 2.创建镜像拉取密钥信息 进入项目如ipaas-devops&#xff0c;选择配置->保密字典->创建&#xf…...

Selenium如何用于编写自动化测试脚本?

Selenium如何用于编写自动化测试脚本&#xff1f;它提供了许多测试工具和API&#xff0c;可以与浏览器交互&#xff0c;模拟用户操作&#xff0c;检查网页的各个方面。下面是一些步骤&#xff0c;可以帮助你编写Selenium自动化测试脚本。 1、安装Selenium库和浏览器驱动程序 首…...

linux入门到精通-第二章-常用命令和工具

目录 概述命令格式帮助文档内建命令外部命令&#xff08;--help&#xff09;帮助文档查看man查看谁登陆过电脑 文件目录命令创建目录显示目录结构删除目录 文件相关命令ls命令touchcprm删除mv移动命令 文件查看命令cat 文件内容查看命令less 查看文件内容head 从文件头部查看ta…...

C语言初阶测评题:测试你的基础知识和编程技能!!

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言刷题专栏&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…...

使用HTTPS模式建立高效爬虫IP服务器详细步骤

嘿&#xff0c;各位爬虫小伙伴们&#xff01;想要自己建立一个高效的爬虫IP服务器吗&#xff1f;今天我就来分享一个简单而强大的解决方案——使用HTTPS模式建立工具&#xff01;本文将为你提供详细的操作步骤和代码示例&#xff0c;让你快速上手&#xff0c;轻松建立自己的爬虫…...

每日一题 230二叉搜索树中第K小的元素(中序遍历)

题目 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&#xff1a; 输入…...