数组的定义与使用
一:数组基本概念
1.数组就是一组相关类型的数据集合
2.数组是引用类型
3.两种定义数组的方式:
- 声明并开辟数组 :数据类型 [] 数组名字 = new 数据类型 [长度];
- 分布进行开辟数组:
声明 :数据类型 [] 数组名字 = null;
开辟: 数组名字 = new 数据类型 [长度];
4.数组通过索引完成访问,数组的索引 从0开始 到 长度-1。
5.数组访问超过索引范围报错,ArrayIndexOutOfBoundsExceptio
6.数组本身是有序的集合 通过循环控制索引可以进行操作
7.数组的长度通过数组属性.length完成
8.数组是引用数据类型,不实例化无法使用
9.开发过程多用到数组的循环输出其他的用的很少,注意笔试多爱考数组的概念和使用。二:数组引用传递
1.数组的中括号([])是在 声明 和 使用 的时候使用
2.在进行数组的引用传递的时候不使用中括号
3.同一块堆内存被不同的栈内存 (数组名) 使用三:数组静态初始化
1:简化格式: 数据类型 [ ] 数组名称 = new 数据类型 [ ]{ }
2:完整格式: 数据类型 [ ] 数组名称 = new 数据名称 [长度 ];
数组最大的缺陷是长度固定 , 可通过数据结构实现动态数组。
四:二维数组
开发是很少使用,但是不代表考试不重要
数据类型 [ ] [ ] 数组名称 = new 数据类型[ ] [ ];
二维数组输出使用二重循环。五:数组与方法互操作
方法接受数组就是引用传递 方法接受数组之后 该方法就可以修改数组
六:java对数组的支持
数组排序:Arrays.sort(数组名); //升序排序
数组拷贝:System.Arraycopy( 数组名a, 开始点,数组b,开始点,拷贝长度 );
主方法不要有太多的计算过程,而应该注重逻辑;数组案例:二分法查找
public static int search(int[] arr, int key) {
int start = 0; // 设置头索引
int end = arr.length - 1; // 设置尾索引
while (start <= end) { // 循环判断,当头尾索引符合条件时进行循环
int middle = (start + end) / 2; // 计算数组中间的索引
if (key < arr[middle]) { // 判断中间索引数据和key比较
end = middle - 1;
} else if (key > arr[middle]) {
start = middle + 1;
} else {
return middle; // 找到符合数据的索引
}
}
return -1; // 如果key不存在数组内就返回-1
}
}
七:对象数组(核心)
将对象作为数组元素叫做对象数组
动态初始化 :类名称 [ ] 对象数组名称 = new 类名称 [ 长度 ] ;
静态初始化 :类名称 [ ] 对象数组名称 = new 类名称 { 实例化对象...... };
对象数组保存的数据比基本数据类型数组保存的信息要多得多,开发多使用对象数组。记录时间:(2017年04月06日 15:20 数组使用很基础很有用)