数组的长度必须是确定的。数组一旦被创建,其长度就是不可改变的。其元素类型必须是相同类型,不允许出现不同类型。数组中的元素类型可以是任何类型,包括基本类型和引用类型数组变量属于引用类型,数组可以看成是对象,其中的每个元素可以看成是该对象的成员变量,数组对象本身是在堆中的。 数组边界
下标的合法区间[0,length-1],如果越界会就会报错;
public static void main(String[] args){
int[] a = new int[3];
System.out.println(a[3]);//报错:ArrayIndexOutofBoundsException
}
数组使用
普通for循环
public static void main(String[] args) {
int[] a = {2,7,1,8,2,8};
//打印出全部数组元素
for (int i = 0; i
for-each循环
for (int array : arrays) {//增强for循环
System.out.println(array);
}
数组作方法入参
public static void printArray(int[] arrays ){
for (int i = 0; i
数组作返回值
public static int[] reverse(int[] arrays){//反转数组中的元素
int[] reverse = new int[arrays.length];
for (int i = 0; i
多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个一个特殊的一维数组,其中每个元素都是一个一维数组。
//二维数组
int[][] arrays = new int[2][5];
//可以看成一个2行5列的数组
多维数组的输出
int[][] arrays = {{0,1},{2,3,4},{5},{6,7,8},{9}};
//遍历输出所有元素
for (int i = 0; i
Arrays类
数组的工具类:java.util.Arrays
API中提供的一个工具类,可以对数据对象进行一些基本操作
查看JDK帮助文档
Arrays类中的方法都是用static修饰的静态方法,可以直接用类名进行调用。
Arrays类具有以下常用功能:
fill方法:给数组赋值sort方法:按升序给数组排序equals方法:比较数组中元素值是否相等binarySearch方法:对排序好的数组进行二分查找操作
public static void main(String[] args) {
int[] a = {4,432,3,57,6,7,5,234,24};
// System.out.println(a); 输出的是a变量的内存地址
System.out.println(Arrays.toString(a));//输出a的数组内容
//sort方法:排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//fill方法:赋值
Arrays.fill(a,3,5,0);//从a[3]到a[5]赋值0
System.out.println(Arrays.toString(a));
}
学会看API帮助文档
冒泡排序
每轮比较位置相邻的两个数,判断是否要交换
public static void main(String[] args) {
int[] a = {6,23,78,21,4,69,7,41,67,6,767,34,127,84};
bubbleSort2(a);
System.out.println(Arrays.toString(a));
}
//冒泡排序
public static void bubbleSort1(int[] array){
//外层循环,表示排序的轮数
for (int i = 0; i < array.length-1; i++) {
//内层循环,表示每一次排序的交换
for (int j = 0; j array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
//优化后的冒泡排序
public static void bubbleSort2(int[] array){
boolean flag = true;//标识,判断每一次是否有交换
int i = 0;//标志交换轮数
//外层循环,表示排序的轮数
while (flag) {
flag = false;
//内层循环,表示每一次排序的交换
for (int j = 0; j array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;//flag置为true,表示发生过交换
}
}
i++;//每轮交换过后i自增1
}
}
扩展:稀疏数组
稀疏数组可以压缩存储空间
public static void main(String[] args) {
//创建一个二维数组 10*10
int[][] array1 = new int[10][10]; // 初始化所有位置都是0
//给一些位置赋值
array1[3][5] = 3;
array1[2][7] = 4;
array1[1][8] = 5;
array1[7][3] = 6;
System.out.println("原始数组为:");
//输出原始数组
for (int i = 0; i 


