Java数组

来源:互联网 发布:java正则表达式 匹配: 编辑:程序博客网 时间:2024/06/05 16:28

数组是编程语言中最常见的一种数据结构,不同语言对数组的实现及处理也不尽相同。那么Java中的数组又是怎样的呢?我们该如何定义和使用数组呢?所以,下面让我们一起来学习数组的相关知识。


一、数组的分类

在Java中,数组就是一个变量,用于将相同数据类型的数据存储在内存中。其中,一个数据被称为数组元素。

Java数组是引用数据类型,其分类为:

(1)一维数组

1. 数组创建的格式:

DataType[] ArrayName= new DataType[length];
or DataType[] ArrayName ={element1,element2,element3……};

2.数组的长度:

数组的长度是固定的,必须在创建数组时给定,并且在给定之后使用过程中则不能修改。

3.数组的属性和方法:
属性:唯一的属性——length;
方法:只有继承自Object的方法。


(2)二维数组

1.二维数组的定义:

二维数组是一个一维数组,该一位数组中每一个元素又是一个一维数组。

2. 二维数组的创建:

DataType[][] ArrayName= new DataType[length1][length2];//length2创建时非必需 Or DataType[][] ArrayName= {{element,element…},{element,element…}…};


二、数组的声明

Java语言支持两种语法格式来声明数组:

DataType[] ArrayName;//推荐使用
DataType ArrayName[];


三、数组的初始化

Java语言中,数组初始化以后才能使用

原因:数组是一种引用类型的变量,因此使用它声明一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指针),这个引用变量还未指向任何有效的内存。因此这个数组还不能使用,只有对数组初始化后,才可以使用。

① 初始化的定义:为数组的数组元素分配内存空间,并为每个数组元素赋初始值

② 初始化的两种方式:

静态初始化

(1)定义:初始化时由程序员显式指定每一个数组元素的初始值,由系统决定需要的数组长度

(2)语法格式:

arrayName=new dataType[]{element1,element2,element3…};
or arrayName={element1,element2,element3…};

(3)示例代码:

String[] shapeBtn={"dot","line","rect","round","Rrect","square","polygon","pencil","eraser"}//动态初始化一个Graph类型的数组


动态初始化

(1)定义:只指定数组的长度,由系统为每一个数组元素指定初始值

(2)语法格式:

arrayName=new dataType[length];
//int整型的length参数指定了数组能够容纳数组元素的个数

(3)示例代码:

private Graph[] array = new Graph[100];// 动态初始化一个Graph类型的数组


四、数组的使用

因为数组里所有的元素在内存里是连续的,所以我们可以通过int类型的下标值来访问数组元素。

数组访问元素:

ArrayName[index]; //index的范围:0~length-1
倘若超出index范围:ArrayIndexOutOfBoundsException //数组索引越界异常

访问到数组元素后,就可以把一个数组元素当作一个普通变量使用,其类型为定义数组时使用的类型。

1.为访问到的元素赋值示例代码:

Graph gr = new Graph();//创建一个Graph对象array[2] = gr;//为访问到的数组元素赋值


2.取出访问到的元素示例代码:

Graph s = array[2];//数组的类型为Graph


五、foreach循环

1.用途:遍历数组和集合;

2.特点:无需获得数组或集合的长度,无需通过索引来访问数组元素或者集合元素;

3.语法格式:

for(type variableName:array|collection)
{
//variableName(形参名,循环变量)自动迭代访问每个元素……
}

4.注意事项:使用foreach时,并不能改变数组元素的值,因此不要对foreach的循环变量赋值

5.示例代码:

public static void main(String [] args){int[] a={5,4,1,2,1,9,2,2,1};//foreach循环遍历数组元素for(int i:a){System.out.print(i);}}}


六、数组的优势和缺点

优势:

数组与其它容器的区别体现在三个方面:效率,类型识别以及可以持有primitives
数组是Java提供的,能随机存储和访问reference(引用)序列的诸多方法中的,最高效的一种。数组是一个简单的线性序列,所以它可以快速的访问其中的元素。

缺点:

高效是有代价的:当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里不能改变。也许你会提议先创建一个数组,等到快不够用的时候,再创建一个新的,然后将旧的数组里的reference全部导到新的里面。其实ArrayList(数组列表)就是这么做的。但是这种灵活性所带来的开销,使得ArrayList的效率比起数组有了明显下降

七、总结



原创粉丝点击