java 数组

简介: 在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
  1. 数组的声明和初始化

1.1 声明数组

声明数组时,你需要指定数组元素的数据类型以及数组的名称。数组的声明有两种方式:

方式 1:int[] arr; // 数组声明,arr是数组名,int是数组元素的数据类型
方式 2:int arr[]; // 数组声明,arr是数组名,int是数组元素的数据类型
这两种声明方式是等价的,通常推荐使用 int[] arr 这种方式,因为它能够更好地体现出数组作为数据类型的特性。

1.2 初始化数组

初始化数组有两种主要方式:显式初始化和动态初始化。

显式初始化:在声明数组时,直接给数组赋值。int[] arr = {1, 2, 3, 4, 5}; // 显式初始化数组
动态初始化:先声明数组,再指定数组的大小,之后可以逐个赋值。int[] arr = new int[5]; // 创建一个长度为5的int类型数组 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5;

  1. 数组的基本操作

2.1 访问数组元素

可以通过数组的下标来访问数组的元素。下标从 0 开始。

int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[0]); // 输出 1
System.out.println(arr[2]); // 输出 3
php
102 Bytes
© 菜鸟-创作你的创作
2.2 获取数组长度

可以使用数组的 length 属性来获取数组的大小。

int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr.length); // 输出 5
php
69 Bytes
© 菜鸟-创作你的创作
2.3 遍历数组

数组可以通过 for 循环、增强 for 循环、while 循环等方式进行遍历。

普通 for 循环:int[] arr = {1, 2, 3, 4, 5}; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }
增强 for 循环(foreach):int[] arr = {1, 2, 3, 4, 5}; for (int num : arr) { System.out.println(num); }

  1. 多维数组

Java 支持多维数组,最常见的是二维数组(矩阵)。声明和初始化方法与一维数组类似。

3.1 声明二维数组

方式 1:声明数组并指定数组大小。int[][] matrix = new int[3][3]; // 3行3列的二维数组
方式 2:声明数组并使用显式初始化。int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
3.2 访问二维数组元素

二维数组的元素可以通过 [i][j] 的方式访问,i 是行下标,j 是列下标。

int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(matrix[1][2]); // 输出 6
php
109 Bytes
© 菜鸟-创作你的创作
3.3 遍历二维数组

可以使用嵌套的 for 循环 来遍历二维数组。

int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // 换行
}
php
244 Bytes
© 菜鸟-创作你的创作

  1. 数组的常见操作

4.1 数组的排序

Java 提供了 Arrays 类来进行数组的排序,排序函数是 Arrays.sort()。

import java.util.Arrays;
int[] arr = {5, 3, 8, 1, 2};
Arrays.sort(arr); // 对数组进行升序排序
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3, 5, 8]
php
151 Bytes
© 菜鸟-创作你的创作
4.2 数组的查找

使用 Arrays.binarySearch() 可以进行二分查找。前提是数组必须是已排序的。

import java.util.Arrays;
int[] arr = {1, 2, 3, 5, 8};
int index = Arrays.binarySearch(arr, 5);
System.out.println(index); // 输出 3,表示 5 在数组中的索引位置
php
146 Bytes
© 菜鸟-创作你的创作
4.3 数组的复制

可以使用 Arrays.copyOf() 方法复制数组。

import java.util.Arrays;
int[] arr = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(arr, arr.length); // 完全复制数组
System.out.println(Arrays.toString(copy)); // 输出 [1, 2, 3, 4, 5]
php
176 Bytes
© 菜鸟-创作你的创作
4.4 数组的填充

可以使用 Arrays.fill() 方法填充数组中的元素。

import java.util.Arrays;
int[] arr = new int[5];
Arrays.fill(arr, 10); // 将数组所有元素填充为 10
System.out.println(Arrays.toString(arr)); // 输出 [10, 10, 10, 10, 10]
php
159 Bytes
© 菜鸟-创作你的创作

  1. 数组的注意事项

数组大小:数组的大小一旦初始化后无法更改。你可以通过重新分配新的数组来改变数组的大小。
数组越界:如果访问一个数组中不存在的索引(超出范围),会抛出 ArrayIndexOutOfBoundsException异常。
数组是对象:即使它存储的是基本数据类型,数组本身也是一个对象,因此可以通过 new 操作符来动态分配内存。

  1. 总结

数组是一个固定长度的容器,用于存储相同类型的元素。
Java 数组的基本操作包括声明、初始化、访问、遍历、排序、查找和复制。
数组的长度在创建时确定,不能动态调整大小。
Java 提供了多种工具类,如 Arrays,用于操作数组。
https://www.52runoob.com/archives/4736

目录
相关文章
|
2月前
|
安全 Linux 网络安全
ssh-server配置文件参数PermitRootLogin介绍
**PermitRootLogin** 是 SSH 服务(sshd)配置文件 /etc/ssh/sshd_config 中的一个参数,用于控制是否允许通过 SSH 直接以 root 用户身份 登录到服务器。这个设置是为了增强系统的安全性,特别是在远程访问和管理服务器时。
196 0
|
2月前
|
移动开发 监控 开发者
webuploader上传插件源代码重点难点分析
WebUploader 是一个基于 HTML5 的文件上传插件,提供了多种功能和交互方式,支持拖拽、选择文件、分片上传、图片预览、上传进度等特性。它兼容主流浏览器,并且能够应对复杂的上传需求,如大文件上传和断点续传。 在分析 WebUploader 的源代码时,重点可以放在文件上传的核心功能、事件管理、拖拽上传、进度显示、分片上传的实现方式等方面。 以下是对 WebUploader 源代码的重点和难点的分析。
156 4
|
2月前
|
算法 机器人 Python
【启发式算法】RRT*算法详细介绍(Python)
RRT(Rapidly-exploring Random Tree Star)* 是一种用于机器人路径规划的启发式算法,它是在经典的 RRT(Rapidly-exploring Random Tree)算法的基础上进行改进的。RRT* 通过优化路径质量,能够找到最短的路径,适用于高维空间中的路径规划问题。
348 2
|
2月前
|
机器学习/深度学习 域名解析 缓存
Netstat命令详解(windows下)
netstat 是一个常用的网络命令行工具,它用于显示网络连接、路由表、接口统计信息等。netstat 在 Windows 系统中也有广泛应用,可以帮助你诊断和监视网络连接、网络接口、端口使用情况等。以下是 Windows 环境下 netstat 命令的详解。
249 1
|
2月前
|
存储 SQL 关系型数据库
mysql中max_allowed_packet的解释说明
max_allowed_packet 是 MySQL 配置项之一,用于控制单个包(数据包)能够传输的最大字节数。这个参数限制了 MySQL 在执行某些操作时可以接收或发送的最大数据量,尤其是在处理 大查询、二进制数据(如大 BLOB、TEXT 数据) 时。通过设置合适的 max_allowed_packet 值,可以避免在传输大数据时遇到错误。
235 0
|
2月前
|
机器学习/深度学习 自然语言处理 PyTorch
【笔记】激活函数SiLU和Swish
激活函数 SiLU 和 Swish 都是 深度学习 中用于神经网络中的非线性激活函数,旨在增强模型的表达能力和训练性能。实际上,SiLU(Sigmoid Linear Unit)和 Swish 本质上是同一个激活函数的两种不同名称。
151 0
|
2月前
|
安全 Linux 网络安全
Linux系统怎么设置允许root登录
在 Linux 系统中,允许 root 用户 通过 SSH 登录是通过修改 SSH 配置文件 /etc/ssh/sshd_config 中的 PermitRootLogin 参数来实现的。默认情况下,出于安全考虑,很多 Linux 发行版会禁用 root 用户的 SSH 登录。因此,你可以按照以下步骤来允许 root 用户通过 SSH 登录:
277 0
|
2月前
|
算法 搜索推荐 Java
collections.shuffle
`Collections.shuffle()` 是 Java 中用于随机打乱列表顺序的静态方法,基于 Fisher-Yates 算法实现,支持使用默认或自定义随机数生成器,适用于抽奖、游戏、随机抽样等场景,且会直接修改原列表。
100 0
|
2月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
250 0
|
2月前
|
JSON 人工智能 数据挖掘
LLM开发者必备:掌握21种分块策略让RAG应用性能翻倍
本文将系统介绍21种文本分块策略,从基础方法到高级技术,并详细分析每种策略的适用场景,以帮助开发者构建更加可靠的RAG系统。
204 0
LLM开发者必备:掌握21种分块策略让RAG应用性能翻倍

热门文章

最新文章