五、数组
5.1 数组介绍
数组指的是一种容器,可以用来存储同种数据类型的多个值。
- 数组容器在存储数据的时候,需要结合隐式转换来考虑。
- 例如:int类型的数据容器(byte short int)
5.2 数组的定义与初始化
定义格式一:
数据类型[] 数组名
示例:int [] array
定义格式二:
数据类型 数组名[]
示例:int array[]
数组的初试化:就是在内存中,为数据容器开辟空间,并将数据存入数据容器的过程。
完整格式:
数据类型[] 数组名 = new 数据类型[] {元素1,元素2,…,元素n}
示例:int[] array = new int[] {11,22,33}
简写:int[] array = {11,22,33}
5.3 数组的地址值和元素访问
地址值的格式含义:
距离:[D@776ec8df
[表示一个数组
D表示数组里面的元素是double类型
@表示间隔符号
776ec8df:数组的真正地址值
数组的元素访问
格式:数组名[索引];
5.4 数组的遍历
数组遍历:将数组的所有内容取出来,取出来之后可以进行其他操作。
for(int i = 0; i < arr,length; i++) {
遍历操作;
}
//idea快捷方式 数组名.fori
5.5 数组的动态初始化
动态初始化:初试化时只指定数组长度,由系统为数组分配初始值。
格式:
数据类型[] 数组名 = new 数据类型[数组长度]
示例:int[] arr = new int[3]
//创建的时候由我们指定数组的长度,由虚拟机给出默认的初始化值。
数组默认初始化的规律:
整数类型默认初始化值为0
小数类型默认初始化值为0.0
字符类型默认初始化值为/u0000 即空格
布尔类型,默认初始化值为false
引用数据类型,默认初始化值为null 除四类八种以外都是引用数据类型。
动态初始化和静态初始化的区别
动态初始化:手动指定数组长度,由系统给出默认初始化值。
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
5.6 数组的内存图
JDK8开始,取消方法区,新增元空间。把原来方法区的多种功能进行拆分,有的功能放到了堆中,有的功能放到了元空间中。
- 栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
- 堆 存储对象或者数组,new创建的都存储在堆内存。
- 方法区 存储可以运行的class文件
- 本地方法栈 JVM在使用操作系统的功能的时候使用,与开发无关
- 寄存器 给CPU使用,与开发无关
5.7 二维数组
当我们需要把数据分组管理的时候,就需要用到二维数组。
二维数组的初始化:
- 静态初始化
格式:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2},{元素a,元素b}}
- 动态初始化
格式:
数据类型[][] 数组名 = new 数据类型[m][n];
//m表示二维数组可以存放多少个一维数组
//n表示每一个一维数组可以存放多少个元素
二维数组的内存图