[Java 基础]数组

时间:2023-03-09 23:21:01
[Java 基础]数组

数组初始化

定义数组语法格式

定义数组有两种方式,如下两种格式是等价的:

int[] a1;

int a1[];

 注:在C/C++中,不支持第一种格式。但是,推荐使用这种方式,因为这样似乎更合理,声明了一个整型数组类型的变量,名字为a1。

数组大小

JAVA中,数组不允许在方括号中指定维度(即在方括号中指定数字来限制数组大小)。那么,如何限定数组的大小呢?有以下两种方式:

●使用初始化列表

int[] array = {1, 2, 3, 4, 5, };

注:初始化列表的最后一个逗号是可选的(这一特性使维护长列表变得更容易)。

对象数组

基本类型数组就是指保存的数据类型为基本类型的数组,如int、long、double等。

对象数组是指保存的数据类型为非基本类型的数组,如一些内置类或自定义类等。

对象数组和基本类型数组在使用上几乎是相同的唯一区别就是对象数组保存的是引用,而基本类型数组直接保存的是基本类型的

如下代码中,声明一个自定义类apple类型的数组。如果在数组的各元素还未初始化时就引用这些元素,运行时会报错(代码注释处)。

class Apple {

}

Apple[] apples;

apples = new Apple[3];

//System.out.println(apples[0].toString());

for (int i = 0; i < 3; i++)

    apples[i] = new Apple();

System.out.println(apples[0].toString());

使用new int[]

int[] array;

array = new int[5];    //分配一个含有5个int型元素大小的数组,所有元素自动初始化为0

数组赋值

不同于C/C++,在JAVA中,允许将一个数组整体赋值给另一个数组。如下:

int[] array = {1, 2, 3, 4, 5,};

int[] array2;

array2 = array;

for (int i = 0; i < array2.length; i++) {

    array2[i] = array2[i] + 1; //给数组元素赋值

}

for (int i = 0; i < array.length; i++) {

    System.out.print(array[i] + " ");

}

运行结果:

2 3 4 5 6

这里,其实是复制了一个引用。当array的引用复制给array2后,再对array2进行修改实际上等同于修改array。所以两个数组的值同时发生改变。

注:和C/C++一样,JAVA数组计数也是从第个元素开始,所以下标最大值为length-1。如果超出边界,编译器会提示错误。

数组的特点

数组是一种效率最高存储随机访问对象引用序列的方式。

如果和现在广泛使用的容器相比较,它的优点在于访问效率比较高,缺点在于大小固定,没有容器的大小伸缩性。

Arrays实用功能

java.util.Arrays 类中提供了一套用于数组的static实用方法。以下介绍几个常用的基本方法:

方法名 作用
equals 比较两个数组是否相等,deepEquals用于多维数组
fill 用同一个值填充各个位置。
sort 对数组排序
binarySearch 用于已经排序的数组中查找元素
toString 产生数组的String表示
hashCode 产生数组的散列码