数组的定义
用来存储相同数据类型的有序集合。索引 下标
数组的特点:
- 长度确定
- 元素必须是统一数据类型
- 数据类型可以是任意类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组也是对象。
- 数组有索引,从0----arr.length.
数组的使用
1. 数组的声明
int[] arr;
int arr2[];
int[] arr3 = null ;//空,数组的赋值null与什么都没有赋值,效果不一样。
2. 数组的创建
arr = new int[4];//给数组开辟了长度为四的空间;编译时声明和创建合并为一句话。
3. 数组的初始化
静态初始化(两种)
- 用new关键字产生数组 int[] arr = {11 , 22 , 33 }
- 直接在定义数组的同时为数组分配空间并赋值。int[] arr = new[]{11,22,33};
动态初始化
数组定义与数组元素分配空间并赋值的操作分开进行
默认初始化
数组是引用类型,他的元素相当于类的实例对象。因此数组已经数组分配空间,每个元素按照实例变量同样的方式被隐士初始化。
int[] arr = new int[3];//有初始化值
byte[] : 0
short[] : 0
int[] : 0
long[] : 0
float[] : 0.0
double[] : 0.0
char[] :‘\u0000’//空格的SCII码
boolean[] : false
引用数据类型 : null
4. 数组的使用
普通for循环
增强for循环(for-each)
优点:代码简单
缺点:单纯的增强for循环,不能涉及索引相关的操作。(改善:在循环中加一个接收器,++操作)
for(int num : arr){ //遍历arr数组,每个数组元素赋值给num进行操作。
....
}
数组的应用
1. 内存
方法的实参传递给形参时,基本数据类型传递的是值,引用数据类型传递的是地址值
2. 数组的查询
- 查询指定位置的元素
- 查询指定元素的下标(返回的下标初始化时应该避开数组下标,一般取-1.)
3. 数组的增加
4. 数组的删除
- 删除指定元素
- 删除指定位置的元素
main方法 详述
可变参数
- 可变参数:解决部分方法的重载问题。方法中的形参数目可变。
- 形式参数格式:(举例)method(int…num)//方法 method(boolean…num)// 方法 method(double…num)//方法
- JDK1.5之后加入的新特性
- 方法的内部对可变参数的处理跟数组一样。
- 可变参数和其他数据一起作为形参,可变参数放在最后举例:method(int num , int…num1)
- 自己写可变参数时尽量不使用,主要是看源码方便。
Arrays类
- java.util下
2. 使用:
//binarySearch:二分查找,指定元素对应索引,有序数组操作
//sort 排序 升序
//copyOf 数组复制,参数为被复制数组,新数组长度
//copyOfRange :区间复制 参数:被复制数组 [1,3)下标左包含右不包含
//equals:比较两个数组是否一样,返回值为true和false
//fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组的每个元素。
3.System中有一个arrayCopy方法,五个参数。
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
二维数组
- 遍历方式
增强 普通 (排列组合) - 初始化
静态初始化
动态初始化:int[][] arr = new int[3][];(列的参数可以省略不写,也可以为任意长度的列)
注意事项:nit[][] arr = new int[3][2];
arr[1] = new int[]{1,2,3,4};//虽然定义的为2列,但是赋值时可以指向新的地址空间。
默认初始化