Java 每日一刊(第9期):数组


“简单是效率的灵魂。”

前言

这里是分享 Java 相关内容的专刊,每日一更。

本期将为大家带来以下内容:

  1. 什么是数组
  2. 初始化数组
  3. 如何访问和操作数组
  4. 遍历数组
  5. 多维数组
  6. 数组的常见操作
  7. 数组的长度和异常处理
  8. Arrays 工具类

什么是数组

数组,简单来说,就是一个能存放多个 相同类型数据 的“容器”。不论是数字、字符、还是对象,只要是同一类型的数据,数组都能把它们整齐地存放在一起。每个数据都有一个位置编号(索引),这样我们就可以快速找到它们。例如:

int[] numbers = new int[5];  // 创建一个可以存放5个整数的数组

这段代码就像是在告诉 Java:“请给我一个带有 5 个格子的柜子,这里面我要放整数。”

初始化数组

在 Java 中,数组的初始化有两种主要方式:

静态初始化:你直接把数据塞进去。

int[] numbers = {1, 2, 3, 4, 5};  // 创建并初始化数组

动态初始化:你先把柜子建好,再慢慢往里放东西。

int[] numbers = new int[5];  // 创建一个空的数组
numbers[0] = 1;  // 把第一个格子填上数字1

如何访问和操作数组

就像在柜子里找东西一样,你可以通过索引来获取或修改数组中的某个元素。索引从 0 开始,这点很重要!

获取数组元素:

int firstNumber = numbers[0];  // 获取第一个格子的内容

修改数组元素:

numbers[2] = 10;  // 把第三个格子的内容改成10

遍历数组

想一次性看看所有的东西?可以用循环来“逛”数组。

使用 for 循环:

for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);  // 打印每个格子的内容
}

使用 foreach 循环:

for (int number : numbers) {
    System.out.println(number);  // 依次打印每个格子的内容
}

多维数组

有时候,一个柜子不够用,我们需要多个柜子来存储更复杂的数据。这时候,多维数组就派上用场了。最常见的是二维数组,它就像是一个装满格子的表格。

创建二维数组:

int[][] matrix = new int[3][3];  // 创建一个3x3的矩阵

访问二维数组:

matrix[0][1] = 5;  // 把第一行第二列的值设为5

想象一下你有一个 3x3 的表格,每个格子都可以放一个数字。这个“表格”就是二维数组。

数组的常见操作

数组不仅能存储数据,还能进行一些常见操作。

复制数组

你可以使用 System.arraycopy()Arrays.copyOf() 来复制数组。

int[] newArray = Arrays.copyOf(numbers, numbers.length);

排序数组

想把数组的内容按顺序排好?Arrays.sort() 可以帮你。

Arrays.sort(numbers);  // 把数组中的数字从小到大排列

搜索数组

找某个数字的位置?Arrays.binarySearch() 是个好工具,但前提是数组得是排好序的。

int index = Arrays.binarySearch(numbers, 3);  // 查找数字3的索引

数组的长度和异常处理

每个数组都有一个固定的长度,也就是它有多少个格子,这个长度是通过 length 属性获取的。

int len = numbers.length;  // 获取数组的长度

但你得小心访问数组时的索引,超出了数组的大小,就会抛出 ArrayIndexOutOfBoundsException 错误。这就像你试图打开一个不存在的柜子,会被告知“没有这个柜子!”

Arrays 工具类

Java 提供了一个非常实用的工具类 java.util.Arrays,它可以帮我们轻松地处理数组。

Arrays.toString():将数组转换成一个字符串,方便我们查看。

System.out.println(Arrays.toString(numbers));  // 输出:[1, 2, 3, 4, 5]

Arrays.equals():用来比较两个数组是否相等。

Arrays.fill():可以将数组中的所有元素设置成相同的值。

Arrays.fill(numbers, 0);  // 把所有格子的值都设为0

本期小知识

在 Java 中,数组是对象,不论它存储的是基本数据类型还是引用类型。因此,数组具有所有对象的特性,包括默认继承自 Object 类的方法。

这意味着数组可以调用 Object 类的方法,如 toString()hashCode(),但由于 toString() 没有被数组重写,它返回的结果是数组对象的内存地址,这就是为什么通常使用 Arrays.toString() 来打印数组内容的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值