1 数组
1.1 数组的创建过程
- 在内存中开辟连续的空间,用来存放数据
- 给数组完成初始化过程,给每个元素赋予默认值
- 数组完成初始化会分配一个唯一的地址值
- 把唯一的地址值交给引用类型的变量a去保存
- 如果想要操作数组中的元素,通过下标来操作
注意:数组名是个引用类型的变量,它保存着的是数组的地址,不是数组中的具体数据
1.2 数组特性
- 数组的长度通过**数组名.length;**来获取
- 数组一旦创建,长度无法改变
- 数组的下标从0开始,最大下标为数组长度-1
- 如果访问到了不存在的下标,会数组下标越界异常
1.3 数组工具类Arrays
- oString(数组名),除了char类型以外,其他类型的数组想要查看数组的具体元素,都得使用这个方法,如果不用,打印是数组的地址值
- sort(数组名),给数组进行排序
- copyOf(要复制的数组,新数组的长度)
如果新的长度大于原数组的长度–数组的扩容
如果新的长度小于原数组的长度–数组的缩容
如果新的长度等于原数组的长度–普通的复制
注意:不管是什么长度,都不是修改原数组,而是创建新数组
2 数组遍历
前提:普通数组的打印只能查看数组中的元素,不能操作,所以如果想要操作数组中的每个元素,可以遍历
遍历:把数组中的元素逐个“过一遍”
通过循环遍历数组,所以循环变量代表的是数组下标
2.1 冒泡排序
排序思路:要比较多轮,每轮两个相邻的元素做比较,位置不对就互换
代码思路:
通过嵌套for循环来完成
1. 外层循环:控制的是轮数,如果有n个数,最多n-1轮
2. 内层循环:控制的是每轮中比较的次数,每一轮的次数会递减,之前轮确定的最大值不应该参与后面轮的比较
注意:外层循环的循环变量代表的是轮数1 2 3 4…
内层循环的循环变量代表的是数组的下标[0,a.length-i)
public class BubbleSort {
public static void main(String[] args) {
int[] a = {98,35,64,15,52,10,7};
System.out.println("原始数据:" + Arrays.toString(a));
method1(a);
}
private static void method1(int[] a) {
/**
* 使用嵌套for循环完成冒泡排序
*/
for (int i = 1; i <= a.length-1; i++) {
for (int j = 0; j < a.length-i; j++) {// 内循环控制每一轮比较的次数
//System.out.println(j + "次");
if (a[j] > a[j + 1]) { // 顺序不对,交换位置
int t;
t = a[j];
a[j] = a[j +1];
a[j + 1] = t;
}
}
System.out.println("第" + i + "轮:" + Arrays.toString(a));
}
System.out.println("排序后:" + Arrays.toString(a));
}
}