数组 数组是什么? 数组是指一组数据的集合,数组中的每个数据被称作元素。数组里面可以存放任意类型的数据,但是一个数组中的数据类型必须相同。 为什么要使用到数组? 根据前面的学习,如果我们想保存50个类似的数据,需要声明50个对应的变量。这样会显得很麻烦,于是我们使用数组,只需要声明一个数组,就可以存储这些变量了。
数组的定义
来看一下数组定义的格式
int [] x =new int [100];上面的语句相当于内存中定义了100个int类型的变量,第一个变量名称为x[0],第二个变量名称为x[1],以此类推,最后一个名称为x[n-1],这些变量的初始值都是0。 为了更好的理解上面的语句,可以将他拆分为两个
int [] x;//int [] int类型的数组, x是数组的名字 x=new int [100];//创建一个数组,将数组的地址赋给变量x数组中最小的索引(即角标)为0,指第一个元素。 数组中最大的索引为“数组长度-1”,指最后一个元素。 java为了方便我们获取数组的长度,可以直接通过“数组名.length”的方式获得数组长度,即元素个数。 系统为数组自动赋值的过程称为动态初始化,程序员在定义数组的同时为数组元素赋值的方法称为静态初始化。 如果数组中元素的值如果没有进行静态初始化,就是该数组类型的默认值。
类型 [] 数组名 = new 类型 [ ] {元素,元素……}; 类型 [] 数组名 = {元素,元素……}; //建议使用第二种方法进行赋值数组的常见操作
1、数组遍历 依次访问数组中的每个元素,这种操作称为数组的遍历,通常使用for循环来进行遍历数组。
public class Example01{ public static void main (String [] args){ int [] arr={1,2,3,4,5}; for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); //因为i是在变化的 所以arr[i]代表的是数组中的每一元素 } } }2、数组最值 通过案例来看一下
public class Example01{ public class static void main (String [] args){ int [] arr={1,3,7,5};//定义数组 int max=getMax(arr);//将获取最大值的方法获取到的最大值赋给max System.out.println(max);//输出最大值 } static int getMax(int [] arr){ int max=arr[0];//定义变量用来记住最大值,先假设最大值是arr[0] //for循环遍历数组 for(int x=1;x<arr.length;x++){ if(arr[x]>max){ max=arr[x]; } } return max; } }3、数组排序 比较常用的是冒泡排序。 例如3,9,8,2,5需要进行冒泡排序,过程是这样的: 第一轮:3和9比,3小9大,因此3不动;9和8比,9大8小,因此9和8交换位置;9和2同理,9和5同理,该轮结果:3,8,2,5,9 第二轮对第一轮结果进行排序:原理和第一轮相同,该轮排序结果3,2,5,8,9 第三轮对第二轮结果进行排序:原理同上,该轮排序结果为2,3,5,8,9
冒泡排序的原理是:不断比较数组中相邻两个元素的大小,较小者向上浮,较大者向下沉。 通过代码来看一下刚刚的例子
public class Example02{ public static void main (String [] args){ int [] arr={3,9,8,2,5}; System.out.print("冒泡排序前:"); printArray(arr);//打印排序前数组 bubbleSort(arr);//调用冒泡排序方法 System.out.print("冒泡排序后:"); printArray(arr);//打印排序后数组 } //定义打印数组方法(即方法printArray) public static void printArray(int [] arr){ //循环遍历数组 for(int x=0;x<arr.length;x++){ System.out.print(arr[i]+",") } System.out.print("\n") } //定义数组排序的方法(冒泡排序,即bubbleSort) public static void bubbleSort(int [] arr){ //定义外层循环 即控制排序的轮数 //元素排序只需要排元素个数-1轮 for(int i=0;i<arr.length-1;i++){ //定义内层循环 即每一轮是如何排序的 //循环一次,排好一个数,那么再次循环的时候就把需要比较的长度-1,也就是-i for(int j=0;j<arr.length-i-1){ if (arr[j] > arr[j + 1]) { // 比较相邻元素 // 下面的三行代码用于交换两个元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } System.out.print("第" + (i + 1) + "轮排序后:"); printArray(arr); // 每轮比较结束打印数组元素 } } }多维数组(二维及以上) 二维数组的含义是数组里面还有一个数组(即数组中嵌套数组)。二维数组就像是一栋大楼共有多少层,每层几户人家。 二维数组定义的方式有三种:
//这种方法是已经确定大小的 int [] [] arr=new int[3][4]; //对确定第一层大小的 int [] [] arr=new int[3][]; //不确定大小的,静态初始化时 int [] [] arr={{1,2},{3,4,5,6},{7,8,9}}二维数组的方位也是通过角标
arr[0][1] //代表访问第一层 第二个数组