1.数组的基本概念
数组:相同类型元素的集合,在内存中是一块连续的空间。
1. 数组中存放的元素类型相同
2. 数组的空间是连在一起的
3. 每个空间都有自己的编号,起始位置的编号为0
2.数组的创建及初始化
以整形数组为例:
1. 动态初始化:在创建数组时,直接指定数组中元素的个数
2. 静态初始化:在创建数组时不直接指定数组元素个数,直接将具体的数组内容进行指定
- 静态初始化,编译器在编译时会根据{ } 中元素的个数来确定数组的长度
- 静态初始化时,{ } 中数据类型必须与[ ]前数据类型一致
- 静态初始化可以简写,省略new int[ ]
3. 静态和动态初始化可以分为两步
4. 没有对数组初始化,数组中元素有其默认值
- 数组中数据类型为基本数据类型,默认值为基本数据类型对应的默认值
- 数组中数据类型为引用类型,默认值为null
3.数组的使用
1.数组中元素的访问
数组是一块连续的空间,支持随机访问,通过下标可以快速访问数组中任意位置的元素。
下标从0开始,介于[0,n)之间不包含n,不能越界访问
2.数组的遍历
- for循环遍历
- for-each遍历
4.数组的应用场景
数组是引用类型,创建的变量称为引用变量,存储的是所引用对象所在堆空间中的起始地址。通过该地址,引用变量便可以去操作对象。
null在Java中表示空引用,说明是一个不指向对象的引用
1.数组作为函数参数
数组是引用类型,按照引用类型来进行传递,可以修改其中存放的内容。数组作为参数进行传递,可以避免对整个数组的拷贝。
2.数组作为函数的返回值,返回的是整个数组
5.操作数组的工具类Arrays
Java 中提供了 java.util.Arrays 包, 其中包含了一些操作数组的常用方法
- 数组转字符串 Arrays.toString( )
- 数组拷贝 Arrays.copyOf(数组名,拷贝的长度) ---- 支持扩容(int)
Arrays.copyofRange(数组名,拷贝的起始位置,拷贝的结束位置)
int[ ] copy = new int[array.length] System.arraycopy(拷贝的源数组,从源数组的哪个位置开始拷贝,拷贝到目标数组,目标数组的哪个位置开始拷贝,拷贝的长度)
- 数组排序 Arrays.sort( )
- 二分查找 Arrays.binarySearch(数组名,查找元素) -- 返回下标
- 数组克隆 int[ ] 目标数组 = 源数组.clone( )
- 数组相等 boolean ret = Arrays.equals(array1,ayyay2)
- 数组填充 Arrays.fill(数组名,val) ----- 支持部分填充
6.二维数组
创建与初始化和一维数组类似,和C语言不同的是初始化时列可以省略
不会则二维数组初始化:
int[ ][ ] array = new int[2][ ];
array[0] = new int[3]; array[1] = new int[4];