数组
什么是数组
- 数组是相同类型数据的有序集合
- 其中,每一个数据称作一个数据元素每个数组元素可以通过一个下标来访问他们。
三种初始化
静态初始化
int[] a = {
1, 2, 3};
Man[] mans = {
new Man(1,1), new Man(2,2)};
动态初始化
int[] a; //数组声明
a = new int[2]; //数组创建
a[0] = 1;
a[1] = 2;
int[] b = new int[2];//数组的声明和创建可以一起完成
b[0] = 1;
b[1] = 2;
默认初始化
数组是引用类型,它的元素相当于实例变量,因此数组已经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
特点:
- 数组长度是确定的,数组一旦被创建,它的大小就不可改变。
- 数组元素是相同类型的,不允许出现混合类型。
- 数组中的元素可以是任何类型,包括基本类型和引用类型。
- 数组变量属于引用类型。数组本身就是对象,Java中对象是在堆中的,因此无论保存的是原始类型还是其他对象类型,数组对象本身是在堆中的。
注意事项:数组下标越界
数组下标的合法区间:[0, length-1],如果越界就会报错
ArrayIndexOutOfBoundsException:数组下标越界异常!
public static void main(String[] args){
int[] a = new int[2];
System.out.println(a[2]);
}
/*报错信息
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at com.liu.array.ArrayGet02.main(ArrayGet02.java:6)
Process finished with exit code 1
*/
Array类
具有以下常用功能:
- 打印数组元素:通过toString方法。
- 给数组赋值:通过fill方法。
- 对数组排序:通过sort方法,按升序。
- 比较数组:通过equals方法比较数组中元素值是否相等。
- 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
Arrays类中的方法都是通过static修饰的静态方法,在使用的时候可以直接使用类名调用。
冒泡排序
主要代码:
两层循环,外层冒泡轮数,内层依次比较。
优化:可通过flag标识位减少没有必要的比较。
public static void main(String[] args) {