articles
第 15 级

Java数组

已在 Random-ZH 群组中发布

数组

数组是一种存储相同类型值的数据结构。使用整数索引访问单个数组元素。例如,如果 a 是整数数组,则表达式 a[i] 的值等于数组中的第 i 个整数。 Java 数组 - 1数组的声明如下:首先指明数组的类型,即数组中包含的元素的类型,后面是一对空方括号,然后是变量的名称。例如,以下是声明由整数组成的数组的方法:
int[] a;
但是,该语句仅声明了一个变量а,而没有使用实际的数组对其进行初始化。要创建数组,您需要使用运算符new
int[] a = new int [100];
该运算符创建一个包含 100 个整数的数组。该数组的元素编号为 0 到 99(而不是 1 到 100)。创建后,可以使用循环等方式填充数组。
int[] а = new int[100];
for (int i = 0; i < 100; i++)
 a[i] = i; //Заполняет массив числами от 0 до 99
如果尝试а [100]通过创建 100 个元素的数组来访问某个元素(或索引超出 0 到 99 范围的任何其他元素),则程序将终止,因为会发生数组索引超出范围异常。要计算数组中元素的数量,请使用数组名称方法.length。例如,
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
一旦创建了数组,就不可能更改其大小(当然,您可以更改其各个元素)。如果在程序执行过程中需要频繁更改数组的大小,最好使用另一种称为数组列表的数据结构。数组可以通过两种方式声明:
int[] a;
or
int a[];
大多数 Java 程序员更喜欢第一种样式,因为它更清楚地将数组类型int [](整数数组)与变量名称分开。

数组初始值设定项和未命名数组

Java 具有同时创建数组并对其进行初始化的功能。下面是这种语法结构的一个例子:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
请注意,在这种情况下不需要使用运算符new。此外,您甚至可以初始化一个未命名的数组:
new int[] {16, 19, 23, 29, 31, 37}
该表达式为新数组分配内存,并用大括号中指定的数字填充它。在这种情况下,计算它们的数量,并相应地确定数组的大小。这种语法结构可以方便地用于重新初始化数组,而无需创建新变量。例如,表达式
smallPrimes = new int{17, 19, 23, 29, 31, 37};
是一个缩短的表达式
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
您可以创建一个大小为零的数组。当编写一个计算结果为空的数组的方法时,这样的数组非常有用。零长度数组声明如下:
new тип Элементов[]
请注意,这样的数组并不等同于对象null

复制数组

一个数组可以复制到另一个数组,但两个变量将引用同一个数组。
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; //Теперь элемент smallPrimes[5]также equals 12
结果如图所示。3.1. 如果需要将一个数组的所有元素复制到另一个数组,则应使用类中的 arraycopy 方法System。它的调用看起来像这样:
System.arraycopy(from, fromlndex, to, tolndex, count);
该数组to必须足够大以包含要复制的所有元素。 Java 数组 - 2
图3.1。复制数组
例如下面所示的算子,其结果如图所示。3.2、创建两个数组,然后将第一个数组的最后四个元素复制到第二个数组中。复制从源数组中的第二个位置开始,复制的元素从第三个位置开始放置到目标数组中。
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
执行这些语句会产生以下结果。
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
Java 数组 - 3
米。3.2. 复制数组元素
Java 中的数组与 C++ 中的数组有显着不同。然而,它实际上与指向动态数组的指针相同。这意味着运营商
int[] a = new int[100]; //Java
相当于运算符
int* = new int[100]; //C++,
а не
int a[100]; //C++
在 Java 中,[]默认运算符检查索引的范围。此外,Java 没有指针算术 — 您无法增加指针来访问数组的下一个元素。 源代码链接:Java 数组
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION