一、数组的概念以及语法格式
(一)、数组的概念
1、数组:是相同类型元素的一个集合。数组在底层的存储空间是连续的。
- 所有的元素类型都是相同的。
- 存储空间都是连续的。
- 每个空间都有自己的编号-----数组的下标。
2、T[] array = new T[N];
- T:数字中存储元素的类型。
- T[]:表明array是数组类型的。
- array:数组名,按照小驼峰的方式来命名。
- new:用来申请数组空间的一个关键字,该关键字申请的空间都在堆上。
- N:是一个常量,表示数组当中的空间的个数----最多可以存储多少个元素。
二、数组的使用
(一)、定义
1、T[] array = new T[N];定义了一个数组,但是没有进行初始化,在Java中数组中每个元素都有其默认值
2、默认值
基本类型 | 引用类型 | |
byte | 0 | null |
short | 0 | |
int | 0 | |
long | 0L | |
float | 0.0f | |
double | 0.0 | |
char | '\u0000' | |
boolean | false |
(二)、数组中元素访问
数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递减,改编号称为数字的下标,数组可以通过下标访问其任意位置的元素。
1、代码示例
int[]array = new int[]{10, 20, 30, 40,50};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
// 也可以通过[]对数组中的元素进行修改
array[0] = 100;
System.out.println(array[0]);
(2)、注意事项
(1)、数组是一段连续的内容空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素。
(2)、下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常。
int[] array = {1, 2, 3};
System.out.println(array[3]); // 数组中只有3个元素,下标一次为:0 1 2,array[3]下标越界
// 执行结果
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at Test.main(Test.java:4)
抛出了 java.lang.ArrayIndexOutOfBoundsException 异常. 使用数组一定要下标谨防越界。
(三)、遍历数组
所谓“遍历”是指将数组中的所有元素都访问一边,访问访问是指对数组中的元素进行某种操作,
1、遍历的方法
(1)、
int[]array = new int[]{10, 20, 30, 40, 50};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
(2)、循环
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < 5; i++){
System.out.println(array[i]);
}
(3)、for-each
int[] array = {1, 2, 3};
for (int x : array) {
System.out.println(x);
}
2、通过数组对象.length来获取数组的长度
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
三、数组的初始化
数组的初始化主要分为动态初始化和静态初始化。
1、动态初始化:在创建数组时,直接指定数组中元素的个数
int[] array = new int[10];
2、静态初始化:在创建数组的时候不直接指定数据元素的个数,而直接将具体的数据内容进行指定
语法格式:T[] 数组名称 = {data1, data2, data3, ..., datan};
3、注意事项
- 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
- 静态初始化时,{}中数据类型必须与[]前的数据类型一样。
- 静态初始化可以简写,省去后面的new T[].
- 数组可以按照c语言的数组格式来创建,但是一般不推荐。
- 如果不确定数组当中内容时,使用动态初始化,否则建议使用静态初始化。
- 静态和动态初始化也可以分为两步,但是省略格式不可以。
- 如果没有对数组进行初始化,数组中元素尤其默认值。
- 如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:int[] array = new int[5];数组中元素默认为0
- 如果数组中存储元素类型为引用类型,默认值为null