定义
多个相同数据类型按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理
数组中常见的概念
数组名
下标(或索引)
元素
数组的长度:元素的个数
数组的特点
数组是有序排列的
数组的概述
数组属于引用数据类型,数组的元素可以是基本数据类型,也可以是引用数据类型。
创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址
数组的长度一旦确定,就不可以被修改
引用数据类型总共有三种:类,接口,数组
数组的分类
按照维数:一维数组,二维数组
按照 数组的元素类型:基本数据类型元素的数组,引用数据类型元素的数组
一维数组的使用
一维数组的声明和初始化
如何调用数组的指定位置的元素
如何获取数组的长度
如何遍历数组
数组元素的默认初始化值
数组的内存解析
一维数组的声明和初始化
int num;//声明
num = 10; //初始化
int id = 1001; //声明+初始化
//一维数组的声明和初始化
int[] ids; //声明
//静态初始化:数组的初始化和数组元素的复制操作同时进行
ids = new int[]{1001,1002,1003,1004};
//动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];
//错误的写法
int[] arr1 = new int[];
int[] arr2 = new int[5];
int[] arr3 = new int[3]{1,2,3}
//也是正确的写法
int[] arr4 = {1,2,3,4}; //类型推断
如何调用数组的指定位置的元素:通过角标的方式调用。
数组的角标从0开始,数组的长度-1 结束。
获取数组的长度 .length
遍历数组的方式
数组元素的默认初始化值
数组元素是整型:都是0
数组元素是浮点型:0.0
数组元素是char类型:ACSII码 0
数组元素是boolean型:false
数组元素是引用数据类型时:null
数组的内存解析
栈(stack):局部变量(在方法中定义的变量)
堆(heap):new出来的结构:对象,数组
方法区
常量池
静态域
一维数组的内存解析
多维数组的使用
二维数组的使用
理解:对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素存在
从数组的底层运行机制来看,其实没有多维数组。
二维数组的使用
二维数组的声明和初始化
如何调用数组的指定位置的元素
如何获取数组的长度
如何遍历数组
数组元素的默认初始化值
数组的内存解析
二维数组的声明和初始化
//静态 初始化
int[][] arr1 = new int[][]{{"12","34"},{"12",""},{"12"}};
//动态初始化1
String[][] arr2 = new String[3][2];
//动态初始化2
String[][] arr3 = new String[3][];
//错误的情况
String[][] arr4 = new String[][4];
String[4][3] arr5 = new String[][];
int[][] arr6 = new int[4][3]{{1,3},{4,5},{6.9}}
//也是正确的情况
int arr4[][] = new int[][]{{"12","34"},{"12",""},{"12"}};
int[] arr5[] =new int[][]{{"12","34"},{"12",""},{"12"}};
int[][] arr6 = {{"12","34"},{"12",""},{"12"}};
二维数组元素的调用
//如何调用指定位置的元素
System.out.println(arr1[1][1]);
//空指针异常
System.out.println(arr3[1][0]);
二维数组的长度和遍历
获取二维数组的长度
//外层的长度
System.out.println(arr1.lenght);
//内层的长度
System.out.println(arr1[0].length)
如何遍历二维数组
for(int i = 0; i < arr4.length;i++){
for(int j = 0; j < arr4[i].length;j++){
System.out.println(arr4[i][j] + " ");
}
System.out.println();
}
二维数组的使用
规定:二维数组分为外层数组的元素,内层数组的元素
int[][] arr = new int[4][2];
//外层元素:arr[0],arr[1]等
//内层元素:arr[0][0],arr[1][2]等