一.数组概念
数组是存储同一种数据类型多个元素的集合
数组既可以存储基本数据类型,也可以存储引用数据类型
二.数组的定义格式
格式一:数据类型[] 数组名 int[] x;定义一个int类型的数组x变量(一般使用这种)
格式二:数据类型 数组名[] int x[];定义一个int类型的a数组变量
三.数组的初始化
动态初始化:初始化时指定数组长度,由系统为数组分配初始化值(默认是0)
格式:数据类型[] 数组名 = new 数据类型[数组长度]
例子:int[] arr = new int[3];
打印arr则是内存地址的值
四.静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:
- 数据类型[] 数组名 = new 数据类型[]{数值1,数值2,数值3}
- 数据类型[] 数组名 = {数值1,数值2,数值3}
例:
- int[] arr = new int[]{1,2,3};
- int[] arr = {1,2,3};
注意事项:不要同时动态和静态进行
如下格式:int[] arr = new int []{1,2,3}//错误
数组操作的两个常见小问题:
ArrayIndexOutOfBoundsException:数组索引越界异常
原因:访问了不存在的索引
NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素
一维数组内存图
五.二维数组
就是元素为一维数组的一个数组
格式1:
数据类型[][] 数组名 = new 数据类型[m][n];
m:表示这个二维数组有多少个一维数组
n:表示每一个一维数组的元素有多少个
注意:
以下格式也可以表示二维数组
a.数据类型 数组名[][] = new 数据类型[m][n];
b.数据类型[] 数组名[] = new 数据类型[m][n];
注意下面定义的区别
int x;
int y;
int x,y;
int[] x;
int[] y[];
int[] x,y[];
格式2:
数据类型[][] 数组名 = new 数据类型[m][];
m:表示这个二维数组有多少个一维数组列数没有给出,可以动态给。
格式3:
基本格式:数据类型[][] 数组名 = new 数据类型[][]{
{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}}
数据类型[][] 数组名 = {
{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}}
举例:int[][] arr = {
{1,2,3},{4,5,6},{7,8,9}};
二维数组例:
class ArrayDemo{
int[][] arr = new int[3][2];
System.out.println(arr);//地址值[[I@175078b
System.out.println(arr[0]);//地址值 [I@42552c
System.out.println(arr[1]);