Java中的数组

时间:2019-04-29 03:17:55  来源:igfitidea点击:

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

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

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

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

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

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

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

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

如何在Java中定义数组

在Java中定义数组的语法:

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

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

// 使用Java的推荐语法定义数组
int[] intValues ;

// 使用 C/C++ 类型的语法定义数组

long longValues[];

如何在Java中初始化数组

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

定义数组;

预留空间;

初始化

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

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

// 使用Java推荐的语法定义数组

int[] intValues;

// 使用 C/C++ 类型的语法定义数组

long longValues[];

//分配空间-数组初始化

intValues =  new int [10]; // 10 个元素,值都为 0

longValues =  new long [5];   //5 个元素,值都为 0

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

intValues [0]  =  10;    // 初始化第1个元素

intValues [1]  =  20;    // 初始化第2个元素

intValues [2]  =  30;    // 初始化第3个元素

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

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

例如:

//分配空间+定义+初始化

// 具有char数据类型值的五个元素的数组
char[] charValues = {'H','e','l','l','o'};

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

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

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

char[] charValues = {'H','e','l','l','o'};

	// 查看数组的长度

      int charNumber = charValues.length;

	// 修改第1个元素的数值

      charValues[0]  =  'H';

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

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:

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

运行时报错:

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