一、什么是数组?
数组是相同数据类型数据的有序集合,其中,每一个数据称为一个数组元素,每个数组元素都可以通过下标来进行访问
举个例子,nums = {1,2,3,4,5} 就是一个整数数组,每个数组元素都是整数,从左到右的下标分别是0,1,2,3,4,nums[0]=1,nums[4]=5。
二、创建数组
1. 一般方法
在程序中使用数组之前必须声明数组变量
dataType[] arrayRefVar; //首选
or
dataType arrayRefVar[]; //不建议使用
使用new操作创建数组(分配内存)
dataTpye[] arratRefvar = new dataType[arraysize]
一个例子
public static void main(String[] args) {
int[] nums; //声明
nums = new int[5]; //创建一个大小为5的整数数组,此时数组元素是对应类型的默认值
//int[] nums1 = new int[5]; //声明并创建
//赋值
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
//nums.length:数组长度
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
2. 初始化
数组一般有三种初始化方法:
- 静态初始化:创建时直接赋值
- 动态初始化:先创建再赋值
- 默认初始化:动态初始化若创建后不赋值,此时数组元素为相应类型的默认值,即为默认初始化
-
静态初始化
//静态初始化:直接赋值 int[] a = {1,2,3};
-
动态初始化
//动态初始化:先创建再赋值,若不赋值即为默认初始化 int[] b = new int[3]; //int[] b; //b = new int[3]; b[0] = 1; b[1] = 2; b[2] = 3;
3. 数组的四个基本特点
- 数组长度是固定的,数组一旦被创建,它的大小就是不可改变的
- 数组元素必须是相同类型,不允许出现混合类型
- 数据中的元素可以是任意数据类型,包括基本数据类型和引用数据类型
- 数组变量是引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身是对象,Java中对象是在堆中的
4. 内存分析
Java内存:
- 堆:存放new的对象和数组
- 栈:存放基本变量类型(具体数值),引用对象的变量(引用在堆里面的地址)
- 方法区:包含所有的class和static变量
我们看一下动态创建数组时的内存情况:
三、数组的使用
1. for-each循环
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
//for-each循环
//遍历数组的所有元素
for (int array : arrays) {
System.out.println(array);
}
}
2. 数组作为方法的参数
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
printArray(arrays);
}
//数组作为方法的参数
//打印数组所有元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
3. 数组作为返回值
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
int[] resverse = reverse(arrays);
printArray(resverse);
}
//数组作为返回值
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
result[j] = arrays[i];
}
return result;
}
//打印数组所有元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
}
4. 多维数组
多维数组可以看成是数组的数组,比如二维数组,可以看作是特殊的一维数组,即每个数组元素都是一个一维数组。
//一个2行5列的二维数组
int[][] a= new int[2][5];
public static void main(String[] args) {
//一个二维数组
int[][] arraysTwo = {{0,1,2},{3,4,5}};
System.out.println(arraysTwo[0][1]); //1
System.out.println(arraysTwo[1][0]); //3
}