在计算机语言中,数组是非常重要的数据结构,大部分计算机语言中,数组具有如下三个基本特性:
一致性:数组只能保存相同数据类型的元素,可以是任何相同的数据类型;
有序性:数组中的元素是有序的,通过下标访问;
不可变性:数组一旦初始化,则长度(数组中元素的个数)不可变。
在 Java 中,数组的下标是从零开始的,事实上,很多计算机语言的数组下标都是从零开始的。Java 数组下标访问运算符是中括号,如 intArray[0],表示访问 intArray 数组的第一个元素,0 是第一个元素的下标。
另外,Java 中的数组本身是引用数据类型,它的长度属性是 length。
Java数组声明
引用数据类型之前一定要做两件事情:声明和初始化。数组声明完成后,数组的长度还不能确定。
数组声明的语法格式如下:
元素数据类型[] 数组变量名;
元素数据类型 数组变量名[];
可见数组的声明有两种方式:
一种是中括号([])跟在元素数据类型之后;
另一种是中括号([])跟在数组变量名之后。
从面向对象角度看,Java 更推荐采用第一种声明方式,因为它把“元素数据类型[]”看成一个整体类型,即数组类型。而第二种是 C 语言数组声明方式。
数组声明示例如下:
int intArray[];
float[] floatArray;
String strArray[];
Date[] dateArray;
Java数组初始化
声明完成就要对数组进行初始化,数组初始化的过程就是为数组每一个元素分配内存空间,并为每一个元素提供初始值。初始化之后数组的长度就确定下来不能再变化了。
数组初始化可以分为静态初始化和动态初始化。
1) 静态初始化
静态初始化就是将数组的元素放到大括号中,元素之间用逗号(,)分隔。示例代码如下:
double[] doubleArray = {2.1, 32, 43, 45};
String[] strArray = {"刘备", "关羽", "张飞"};
静态初始化是在已知数组的每一个元素内容的情况下使用的。很多情况下数据是从数据库或网络中获得的,在编程时不知道元素有多少,更不知道元素的内容,此时可采用动态初始化。
2) 动态初始化
动态初始化使用 new 运算符分配指定长度的内存空间,语法格式如下:
new 元素数据类型[数组长度];
示例代码如下:
// 数组初始化
public class Main {
public static void main(String args[]) {
// 1. 静态初始化
double[] doubleArray = {2.1, 3.2, 0.43, 5.45};
String[] strArray = {"刘备", "关羽", "张飞"};
// 2. 动态初始化
int[] intArray2; // 声明数组 intArray2
intArray2 = new int[4]; // 通过 new 运算符分配了 4 个元素的内存空间
intArray2[0] = 21;
intArray2[1] = 32;
intArray2[2] = 43;
// 动态初始化 String 数组
String[] strArray2 = new String[3]; // 通过 new 运算符分配了 3 个元素的内存空间
// 初始化数组元素
strArray2[0] = "刘备";
strArray2[1] = "关羽";
strArray2[2] = "张飞";
}
}