一、静态化初始数组
1>完整写法
数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2,元素3,,,,};
举个栗子:
int[] ages = new int[]{12,15,21,33};
2.>简化写法
数据类型[ ] 数组名 = {元素1,元素2,元素3,,,,};
举个栗子:
double[] scores = {12.5,99.5,60};
3>数组名和[ ]交换位置(可以但是不推荐这样写)
数据类型 数组名 [ ] = {元素1,元素2,元素3,,,,};
举个栗子:
String names [] = {"张三","李四"};
二、动态初始化数组
1>写法
数组类型[ ] 数组名 = new 数组类型[长度];
举个栗子:
char[] chars = new char[3];//[0,0,0]
2>默认值(动态初始化数组元素的默认值)
数据类型 | 明细 | 默认值 |
整数型 | byte,short,int,char,long | 0 |
浮点型 | float,double | 0.0 |
布尔型 | boolean | false |
引用型 | String,类,数组 | null |
3>空指针异常与数组越界(动态化数组里比较容易报的错)
如果某个数组变量存储的地址是null,那么该变量将不指向任何数组对象(可输出,不可访问),这时就会报错,NullPointerException(空指针异常)
如果访问元素索引超出数组定义的最大索引,则会报错,数组越界
4>多个数组变量指向同一数组对象
定义的数组变量在堆内存中,存储的是栈内存中的数组对象提供的指向栈内存数组对象的"地址",
所以当多个数组变量指向同一数组对象时,修改的是同一数组对象中的数据
举个栗子:
public static void main(String[] args) {
int[] age1 = {1,2,3};
int[] age2 = age1;
age2[1] = 0;
System.out.println(age1[1]);//0
}
三、数组的遍历
首先要了解怎么获取数组元素个数?
数组名.length
1>增强for循环--------快速生成: 数组名.for
生成如下:
public class aaa {
public static void main(String[] args) {
int[] age1 = {1,2,3};
for (int i : age1) {
System.out.print(i);//123
}
}
}
2>正序遍历--------快速生成: 数组名.fori
生成如下:
public class aaa {
public static void main(String[] args) {
int[] age1 = {1,2,3};
for (int i = 0; i < age1.length; i++) {
System.out.print(age1[i]);//123
}
}
}
3>倒序遍历--------快速生成: 数组名.forr
生成如下:
public class aaa {
public static void main(String[] args) {
int[] age1 = {1,2,3};
for (int i = age1.length - 1; i >= 0; i--) {
System.out.print(age1[i]);//321
}
}
}