数组(array):是一种用于存储多个相同数据类型的存储模型(可以理解为容器)
数组定义和静态初始化
数组的两种定义格式:
格式1:
数据类型[] 变量名;
范例: int[] arr; // 定义了一个int类型的数组,数组名是arr
格式2:
数据类型 变量名[];
范例: int arr[]; 定义了一个int类型的变量,变量名是arr数组- public class Test {
- public static void main(String args[ ]) {
- int[ ] s; // 声明数组;
- s = new int[10]; // 动态初始化。给数组分配空间;
- for (int i = 0; i < 10; i++) { // 遍历数组
- s[i] = 2 * i + 1;//给数组元素赋值; 数组是对象,数组中的元素就是对象的属性
- System.out.println(s[i]);
- }
- }
- }
复制代码
静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:
数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};
范例:int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 变量名 = {数据1,数据2,数据3,…};
范例:int[] arr = {1,2,3};
动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:
数据类型[ ] 变量名 = new 数据类型 [数组长度]; // new:开辟数组内存空间
范例:
int[] arr = new int[3]; 表示我们定义了一个int类型的数组,初始化为3个元素。
- 静态初始化:开始就存入元素值,适合一开始就能确定元素值的业务场景
- 动态初始化:指定数组长度,后期赋值,适合开始知道数据的数量,但是不确定具体元素值的业务场景
- 注意:两种初始化的方式是独立的,不可以混用
数组使用中的两个小问题
1:索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
ArrayIndexOutOfBoundsException
2:空指针异常:对象不再指向堆内存,还想继续访问数据,访问失败
NullPointerException
3:null:空值,引用数据类型的默认值,表示不指向任何有效对象
数组的遍历
数组特征:
①:索引从0开始
②:索引是连续的
③:索引逐一增加,每次加1
数组元素下标的合法区间:[0, length-1]。我们可以通过下标来遍历数组中的元素,遍 历时可以读取元素的值或者修改元素的值。
使用循环初始化和遍历数
[code]public class Test { public static void main(String[ ] args) { int[ ] a = new int[4]; // 动态初始化//初始化数组元素的值 for(int i=0;i |