Java中的数组


如何在Java中定义和处理数组数据结构。

数组是Java对象的一种特殊形式,用于存储元素的同构列表(向量的每个元素都具有与向量类型相同的类型— 基元数据类型

数组中元素的数目是固定的,它定义了数组的长度。

从语法和逻辑的角度来看,java中的数组与C或C++中的数组是相同的。实现上有差异,但对程序员来说是透明的,我们不会注意到它们:

在Java中,数组是一种特殊的对象,array类的实例;

Java允许使用索引操作符[],来访问数组元素;

new运算符(用于构建对象和在堆中分配空间)接受数组大小作为参数;

因为数组是对象,程序员可以访问属性 length来获得数组大小(比C或C++更大的优势,因为我们不再需要用另一个变量来管理它的大小);

如何在Java中定义数组

在Java中定义数组的语法:

1
2
base_type[] array_name;
base_type array_name[]; //类似于C/C++的风格

重要根据定义,array_name是一个未初始化的类型引用(指针)变量,默认值为nullnull是一个Java关键字,表示一个不存在的地址,其值等于0。

1
2
3
4
5
6
// 使用Java的推荐语法定义数组
int[] intValues ;
// 使用 C/C++ 类型的语法定义数组
long longValues[];

如何在Java中初始化数组

因为它们是对象,所以数组值存储在堆中(具有动态分配的RAM内存区域,在该区域中进程可以在运行时保留空间),一个数组按3个步骤初始化:

定义数组;

预留空间;

初始化

(可选,因为在内存分配过程中,元素会得到与数组 基元数据类型相关联的默认值——对于基元数据类型检查和引用,默认值为 null

在本教程中,将用基元值来分析数组,在我们看到类和对象相关的概念之后,我们将分析对象数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
// 使用Java推荐的语法定义数组
int[] intValues;
// 使用 C/C++ 类型的语法定义数组
long longValues[];
//分配空间-数组初始化
intValues = new int [10]; // 10 个元素,值都为 0
longValues = new long [5]; //5 个元素,值都为 0

单独的元素的初始化可以使用运算符[]。
注意!用于访问元素的索引的值在[0,length-1]直接)

1
2
3
4
5
intValues [0] = 10; // 初始化第1个元素
intValues [1] = 20; // 初始化第2个元素
intValues [2] = 30; // 初始化第3个元素

如果我们知道数组的值,则可以通过一条指令执行对象实例化和初始化:

1
base_type[] array_name = {value1, value2, …, valueN);

例如:

1
2
3
4
//分配空间+定义+初始化
// 具有char数据类型值的五个元素的数组
char[] charValues = {'H','e','l','l','o'};

如何在Java中访问和处理数组

访问数组元素可以使用[]运算符。
注意用于访问元素的索引只能是[0,length-1]之间的值。

数组中的项数是通过访问其属性 length来确定的(在Java中,数组是array类型的对象)。

1
2
3
4
5
6
7
8
9
char[] charValues = {'H','e','l','l','o'};
// 查看数组的长度
int charNumber = charValues.length;
// 修改第1个元素的数值
charValues[0] = 'H';

下面的示例使用1到10的值初始化数组元素,然后在控制台上打印它们。

1
2
3
4
5
6
7
8
9
10
11
int[] intValues = new int[10];
for(int i=0;i < intValues.length;i++)
intValues[i] = i+1;
//enhanced for
for(int value:intValues)
System.out.println(value);

注意用于访问元素的索引只能是[0,length-1]之间的值。否则会出现运行时异常,如 ArrayIndexOutOfBoundsException:

1
2
char[] charValues = {'H','e','l','l','o'};
charValues [ 5 ] = '!';

运行时报错:

1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5


原文链接:https://codingdict.com/