一、数组概述
- 数组:数组是在内存中开辟的一块连续的内存空间,用于存储相同数据类型的一种数据结构
- 数组会对存入其中的元素进行自动的编号,这些编号是从0开始的,称之为元素的下标
- 数组中存储的数据称之为元素,我们存储数据称之为添加元素,数组的大小也叫数组的长度
二、数组的特点
- 数组属于引用数据类型,数组的元素可以是基本数据类型,也可以是引用数据类型
- 创建数组的时候,会开辟一块连续的内存空间
- 数组的长度一旦确定,就不能被修改
- 数组是有序排列的
- 数组长度的获取: 数组名.length; 如:array.length;
三、定义数组
- 静态初始化定义数组(两种方式)
- 方式一
格式 | 示例 | 说明 |
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3} | int[] arr = new int[]{3,5,9} | 定义一个整数类型的数组arr, 数组中存储元素都是int类型3,5,9,该数组长度为3 |
注意: int[]arr = new int[3]{3,5,9} 这种写法是错误的,因为大括号中存入的元素和中括号中指定的长度可能不一致
- 方式二
方式二就是方式一的简写形式
格式 | 示例 | 说明 |
数据类型[] 数组名 ={元素1,元素2,元素3} | int[] arr ={3,5,9} | 定义一个整数类型的数组arr, 数组中存储元素都是int类型3,5,9,该数组长度为3 |
- 动态初始化定义数组(一种方式)
格式 | 示例 | 说明 |
数据类型[] 数组名 =new 数据类型[数据长度] | int[] arr =new int[5]; | 定义一个整数类型的数组arr,数组长度为5,每一个元素都默认是int类型,值默认为0 |
四、内存存储
- 在Java中,把内存进行了划分,划分为不同的区间(栈内存,堆内存,方法区,本地方法栈,PC计数器),今天我们重点关注的是栈内存和堆内存
- 栈内存:栈内存用于存储变量,变量在使用的时候是存储在栈内存中的,使用完成之后,从栈内存中移除
- 堆内存: 堆内存是用来存储对象的,而数组是对象的一种,当数组存入堆内存中的时候,堆内存会自动的对数组中的每一个位置赋一个默认值
如果数组元素是引用数据类型,默认值是null, 如果数组元素是byte short int 类型那么默认值:0 ,char类型的数组默认值是'\u0000' (空格) ,boolean类型的数组默认值是false
- 数组内存结构
五、数组的访问
- 访问格式: 数组名[下标] 如:arr[0]
- 数组的长度:数组名.length 如:arr.length;
- 数组最后一个元素的下标: 数组长度-1] 比如: arr最有一个元素 :arr[arr.length-1]
- 当访问数组的时候,下标超出指定长度 数组名.length-1 就会发生数组下标越界 ArrayIndexOutOfBoundsException
六、数组的遍历
- 遍历:从头到尾获取数组的每一个元素
- 传统的方式遍历
int[] arr = {12,5,98,6,36,24,25}; //传统方式遍历 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); System.out.println(arr[5]); System.out.println(arr[6]); |
- for循环遍历
int[] arr = {12,5,98,6,36,24,25}; //for循环遍历,如果需要元素的下标只能用for循环 for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } |
- 增强for循环遍历
int[] arr = {12,5,98,6,36,24,25}; //增强for循环遍历,如果不需要元素的下标可以使用增强for循环 for(int i:arr){ System.out.println(i); } |