什么是数组?
数组: 是一个可以保存多个数据的容器,但是只能存储同一种类型的数据。数组的一旦定义,不可以发生改变。
一维数组:
声明: 数据类型[] 数组名 = new 数据类型[数组的长度];
数据类型[] 数组名 = new 数据类型[]{元素。。。。};
数据类型[] 数组名 = {元素 。。。。 };
数组的使用: 数组名[下标]。
- 数据类型: 可以使基本类型 也可以使引用类型 比如 int[] arr double[] arr String[] arr
- 数组中只能存储跟声明时相同的数据类型。
- 数组本身也是一种数据类型 叫做数组类型
注意 int 和 int[] 是不是一种数据类型
eg:
int [ ] arr =new int[ ]; arr={1,2,3,4,5};
数组的初始化:
- 动态初始化
数组名 = new 数据类型[数组的长度];
一般声明和初始化 一起使用
数据类型[] 数组名 = new 数据类型[数组的长度];
注意:左边的括号没有数字。
2.静态初始化
数据类型[ ] 数组名 = new 数据类型[ ] {元素1,元素2,元素3..... };
动态初始化由我们自己指定数组的长度,由系统 给i与元素的初始值。
静态初始化由我们自己指定元素的初始值,由系统指定数组的长度。
数组的使用:
我们可以将数组里面的每一个元素当成是一个普通的变量来对待
通过数组名 加 下标的形式来使用 数组名[下标]
下标:
最小值是0
最大值是 数组的长度-1
数组名[0] 表示数组的第一个元素 数组名[长度-1] 表示最后一个元素
如果当一个数组的下标超过了最大值,那么会报数组角标越界异常。
ArrayIndexOutOfBoundsException
如果一个栈内存的变量不再引用一个堆内存的数组对象,那么这个时候如果再通过该变量去访问数组的元素,就会出现空指针异常:
NullPointerException: 当一个null对象去调用一个方法的时候也会出现空指针异常
数组的遍历:
eg: //数组名.length 表示数组中元素的个数
public class Array{
public static void main(String[] args){
int [ ] arr={1,2,3,4,5};
for(int i=0;i<arr.length;i++){
System.out.println(arr[ i ]);
}
} }
arrays的使用:
import java.util.*;
public class Array{
public static void main(String[] args){
int [ ] arr={1,2,3,4,5};
System.out.println(arr);
System.out.println(arrays.toString(arr));
} }
二维数组:
我们可以将二维数组当成是一个元素为一维数组的数组。
二维数组的定义:
数据类型[][] 数组名 = new 数据类型[二维数组中元素的个数][一维数组的元素个数];
数据类型[][] 数组名 = {{1,2,3},{4,5,6},{7,8,9}};
怎么使用二维数组:
数组名[下标]: 获取到的二维数组中的一维数组
数组名[下标][下标]: 获取二维数组中一维数组的元素。
二维数组的length属性:
数组名.length : 二维数组的长度,一维数组的个数
数组名[下标].length : 二维数组中一维数组的长度
eg
public class shuzu{
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.println(arr[i][j]);
}
} // 1 2 3 4 5 6 7 8 9
}
}
当碰到二维数组中一维数组的长度不一样的情况
public class Arrays{
public static void main(String[] args){
int [] [] arr=new int[3] [];//二维数组的长度已经确定,但是里面的一维数组还没初始化
arr[0]=new int[ 3]; //给一维数组初始化
arr[1]=new int[2];
arr[2]=new int[4];
}
}