数组:一种容器,可以用来存储同种数据类型的多个值,按照一定顺序排列的集合,包含数组名称(变量名称)、元素。通过编号的方式对数组元素进行管理
数组容器在存储数据时,需要结合隐式转换考虑
例:int类型的数组容器可以存byte、short、int
double类型的数组容器可以存byte、short、int、long、float、double
建议:容器的类型,和存储的数据类型保持一致
数组的特点:
- 有序的序列
- 属于引用数据类型,数组元素可以是基本数据类型,也可以是引用数据类型
- 数据创建时,会在内存开辟一整块连续的空间
- 数组的长度一旦确定,不能修改
数组分类:一维数组、多维数组
数组的定义和初始化
数组初始化有两种方式:静态初始化、动态初始化
数组的定义有两种格式:
- 格式一:数据类型[] 数组名 例:int[] array 平时最习惯的格式
- 格式二:数据类型 数组名[] 例:int array[]
数组的初始化:在内存中,为数组容器开辟空间,将数据存入容器的过程
静态初始化格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…}; // 初始化和声明同时完成
例:int[] array = new int[]{11,22,33}; double[] array = new double[]{11.1,22.2,33.3};
实际开发中更多用简化格式:数据类型[] 数组名 = {元素1,元素2,元素3…}; // java类型推断
例:int[] arr = {1,2,3,4}; System.out.println(arr); // 输出 [I@1b6d3586 ,这是数组容器在内存中的地址值
地址值的格式含义:[ :表示当前是一个数组 I:表示当前数组里面的元素都是int类型
@:表示一个间隔符号(固定格式,无特殊含义) 1b6d3586:数组真正的地址值(十六进制)
平时习惯会把 [I@1b6d3586 这个整体叫做数组的地址值,但只有1b6d3586才是真正的地址值
数组的动态初始化:初始化时只指定数组长度,由系统为数组分配初始值 // 声明无初始化
格式:数据类型[] 数组名 = new 数据类型[数组长度]; 例:int[] arr = new int[3]; // 只能存三个元素
默认初始化值的规律:
- 整数类型:默认初始化值为 0 long是0L
- 小数类型:默认初始化值为 0.0
- 字符类型:默认初始化值为0或者 ‘\u0000’ (空格)
- 布尔类型:默认初始化值为 false
- 引用数据类型:默认初始化值为 null
数组动态初始化和静态初始化的区别:
动态初始化:手动指定数组长度,由系统给出默认初始化值
使用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
使用场景:明确了要操作的数据类型,直接静态初始化即可