1.概述
数组是用于储存多个相同类型数据的集合。数组既可以存储基本数据类型,也可以存储引用数据类型。数组是一种最简单的数据结构,它占据一块连续的内存(即使在物理内存中不是连续的,在逻辑上肯定是连续的)并且顺序存储数据。
2. 数组的创建
使用new操作符来创建数组,语法如下:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
或
数据类型[] 数组名 = new 数据类型[数组长度];
第一种创建方式称为:静态初始化:显式指定每个数组元素的初始值。
第二种创建方式称为:动态初始化:显式指定数组的长度。
这两种方式在创建的时候都指定了数组的长度,第一种方式数组的长度为元素个数的总数,第二种方式数组的长度在创建的时候就指定了。当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说也是一样的,因为数组也是一个对象。内存中就会为数组开辟一段固定长度的内存,如下图所示:图片来自百度图片
因为数组有这样的数据结构,所以它有以下几种特性:
a. 一个数组占据的存储空间大小固定,不能改变
b. 所占据的存储空间是专用的,不能被其他信息占据
c. 所占据的存储空间是连续性的,中间不能间隔其他的信息
d. 数组中的各个元素可以用数组名和下标直接访问
3.一维数组
int[] arr = {1, 2, 3, 4, 5};
一维数组在内存中是一段连续的内存,第一个元素下标为0 。一维数组的使用参考下面示例:
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
// 打印所有数组元素
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
System.out.print(arr[i] + ",");
} else {
System.out.println(arr[i]);
}
}
// 计算所有元素的总和
int total = 0;
for (int i = 0; i < arr.length; i++) {
total += arr[i];
}
System.out.println("Total is " + total);
// 查找最大元素
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) max = arr[i];
}
System.out.println("Max is " + max);
}
}
运行结果:
1,2,3,4,5
Total is 15
Max is 5
4. 二维数组
在Java中只有一维数组,二维数组是一个存放了数组的数组。
int arr[][] = {{1,2},{3,4,5,6},{7,8,9}};
public class Test1 {
public static void main(String[] args) {
int arr[][] = {{1,2,3},{4,5,6},{7,8,9}};
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr[i].length; j++){
System.out.print("["+i+"]"+"["+j+"]="+arr[i][j]+" ");
}
System.out.println();
}
}
}
运行结果:
[0][0]=1 [0][1]=2 [0][2]=3
[1][0]=4 [1][1]=5 [1][2]=6
[2][0]=7 [2][1]=8 [2][2]=9