数组的定义格式:
1.一维数组的定义格式:
数据类型[] 数组名=new 数据类型[数组的长度]; //数据类型前后保持一致
a.动态初始化:动:仅指定长度不指定具体元素值
int[] arr=new int[3];//定义了一个能存三个元素的数组容器
//数组的类型是 int[] 也是一个引用数据类型
//即将要存储的元素的类型保修是int类型
b.静态初始化:静:在定义的数组的时为数组中元素赋值
int[] arr = { 1, 2, 3, 4 };//定义了一个能存三个元素的数组容器
//数组的类型是 int[] 也是一个引用数据类型
//即将要存储的元素的类型都是int类型
//arr[0]=1,arr[1]=2,arr[2]=3,arr[3]=4
2.二维数组的定义格式:
a.二维数组的动态初始化
数据类型[][] 数组名=new 数据类型[一维数组个数][每个一维数组的长度];
int[][] arr = new int[3][4];//3个一维数组,每个一维数组长度都是4
b.二维数组的静态初始化
int[][] arr ={{1,2},{3,4,5},{6,7}}//内层有几个大括号就有几个一维数组
b.数组的使用
1.一维数组的使用
a.取出元素
System.out.println(arr[0]);//0
各种类型数组的默认值:
整数:
byte,short,int 0
字符:
char 空格
小数:
float,double 0.0
布尔:
boolean false
引用类型:
String[] strArr=new String[3];
strArr[0]默认值为null
strArr[1]默认值为null
strArr[2]默认值为null
b.获取长度
int len=arr.length;//获取数组的长度
c.为数组元素赋值:
arr[1]=10//将int类型的10赋值给了arr[1]
//此时10将默认的0覆盖掉
d.数组遍历:
for (int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
2.二维数组的使用
a.取出元素:
int[][] arr = new int[3][4];
System.out.println(arr[0]);//打印第一个一维数组容器的地址值
System.out.println(arr[0][1]);//打印第一个一维数组第二个元素0
int[][] arr ={{1,2},{3,4,5},{6,7}}
System.out.println(arr[1][1]);//第二个一维数组的第二个元素
//4
b.获取长度:
int[][] arr = new int[3][4];
int len=arr.length//返回一维数组的个数
c.维数组元素赋值:
arr[0][1]=13;//为第1个一维数组的第二个元素赋值为13
d.数组遍历
int[][] arr = new int[3][4];
for (int i=0;i<3;i++) {//外层循环控制:遍历到第几个一维数组
for (int j=0;j<4;j++) {//内层循环控制:遍历当前一维数组的所有元素
System.out.println(arr[i][j]);
}
}
3.数组的注意事项:
a.数组的索引越界异常
int[] arr = {5,2,1};
//数组中3个元素,索引 0,1,2
//System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
b.空指针异常
int[] arr2 = {1,5,8};
System.out.println(arr2[2]);
arr2 = null; // arr2 不在保存数组的地址了(null只能赋值给引用变量,不能给基本类型变量)
System.out.println(arr2[2]);//java.lang.NullPointerException
System.out.println(arr2.length);//java.lang.NullPointerException