数组
1.1 静态创建
int[] a = {1,2,3,4,5};
int[] a = new int[]{1,2,3,4,5};
1.2 动态创建
int[] a = new int[5];
1. 3 数组的创建过程
- 在内存中开辟连续的空间,用来存放数据
- 给数组完成初始化过程,给每个元素赋予默认值
- 数组完成初始化会分配一个唯一的地址值
- 把唯一的地址值交给引用类型的变量a去保存
- 如果想要操作数组中的元素,可以根据变量保存的地址找到数组,然后根据下标来操作数组的具体元素
数组名保存的是数组的地址值,不是数组中每一个具体的元素,数组名是一个引用类型的变量
2. 数组的特性
- 数组的长度通过 - 数组名.length; 来获取
- 数组一旦创建,长度无法改变
- 数组的下标从0开始,最大下标为 数组长度-1 即 (数组名.length-1)
- 如果访问到了不存在的下标,会数组下标越界异常
3. 数组的工具类Arrays
- toString(数组名),除了char类型以外,其他类型的数组想要查看数组的具体元素,都得使用这个方法,如果不用,打印是数组的地址值
- sort(数组名),给数组进行排序
copyOf(要复制的数组,新数组的长度)
如果新的长度大于原数组的长度–数组的扩容<br /> 如果新的长度小于原数组的长度–数组的缩容<br /> 如果新的长度等于原数组的长度–普通的复制<br /> 注意:不管是什么长度,都不是修改原数组,而是创建新数组
4. 数组的遍历
- 如果只是想查看数组中有哪些元素,直接使用 System.out.println(Arrays.toString(数组名));
- 如果想要拿到数组中的一个个的具体元素,或者是对数组中的元素做进一步的操作,就需要对数组进行遍历
- 遍历:把数组中的所有元素,从头到尾逐个“过一遍”
通过循环遍历数组,所以循环中的循环变量代表的是数组的下标
public class ReviewDemo {
public static void main(String[] args) {
int[] a = new int[10];
for(int i = 0;i<a.length;i++) {
//System.out.println(i);//打印的是数组的下标0-9
a[i] = i+11;//a[i]代表的是数组中每一个具体的元素
}
System.out.println(Arrays.toString(a));
//[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
}
}
5. 方法的重载
我们根据方法名+参数列表确定具体调用哪个方法
- 方法的重载:在同一个类中,存在方法名相同,但参数列表不同的方法
- 如果在同类中,同名方法的参数个数不同,一定构成重载
- 如果在同类中,同名方法的参数个数相同,需要查看对应位置上参数的类型,而不是参数名,与参数名无关
6. 冒泡排序比如:
(int a,String b)与(int b,String a)–不构成重载
(int a,String b)与(String a,int b)–构成重载
排序思路:要比较多轮,每轮两个相邻的元素做比较,位置不对就互换
代码思路:
通过嵌套for循环来完成
- 外层循环:控制的是轮数,如果有n个数,最多n-1轮
内层循环:控制的是每轮中比较的次数,每一轮的次数会递减,之前轮确定的最大值不应该参与后面轮的比较
注意:外层循环的循环变量代表的是轮数1 2 3 4…<br /> 内层循环的循环变量代表的是数组的下标[0,a.length-i)