数组是指一组数据的集合,数组中的每个数据被称作元素。数据可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。
数组的定义
在Java中,可以使用以下格式来定义一个数组。
int[] x=new int [100]
上述语句就相当于在内存中定义了100个int类型的变量,第一个变量的名称为X[0],第二个变量的名称为X[1]…依此类推,第100个变量的名称为x[99],这些变量的初始值都是0。
int [] x;//声明一个 int[]类型的变量
x=new int[100];//创建一个长度为100的数组
需要注意的是,数组中最小的索引是0,最大的索引是“数组的长度-1"。在Java中,为了方便的获得数组的长度,提供了一个length属性,在程序中可以通过"数组名.length"的方式来获取数组的长度,即元素的个数 。
数组被成功创建后,数组中的元素会自动被自动赋予一个默认值,根据元素类型的不同,默认初始化的值是不一样的。
在定义数组时指定数组的长度,由系统自动为元素赋初值的方式称作动态初始化。在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。
数组的静态初始化有两种方式,具体格式如下:
1.类型[] 数组名=new 类型[]{元素,元素......}
2.类型[] 数组名={元素,元素,元素......}
数组的遍历
在操作时,经常需要依次访问数组中的元素,这种操作称作数组的遍历。
public class Example {
public static void main(String[] args) {
//定义数组
int[] arr= {1,2,3,4,5};
//使用for循环遍历数组的元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
数组最值
获取数组中的最大值
public static void main(String[] args) {
// 定义一个数组
int[] arr= {4,1,6,3,9,8};
//调用获取元素最大值的方法
int max=getMax(arr);
//打印最大值
System.out.println("max="+max);
}
static int getMax(int[] arr) {
//定义变量max记住最大数,首先假设第1个元素为最大值
int max=arr[0];
//下面通过一个for循环遍历数组中的元素
for (int i = 1; i < arr.length; i++) {
if(arr[i]>max) {
max=arr[i];
}
}
return max;
}
数组排序
冒泡排序法
冒泡排序法:在冒泡排序的过程中,不断地比较数组中的相邻的两个元素,较小者向上浮,较大者往下沉。整个过程和水中气泡上升的原理相似。
接下俩通过几个步骤具体分析一下冒泡排序法的整个过程,具体如下:
第一步:从第一个元素开始,将相邻的两个元素依次比较,直到最后两个元素完成比较。如果前一个比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值。这样就完成了第一轮比较。
第二步:除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第2大的数放在倒数第2个位置。
第三步:依此类推,持续对越来越少的元素重复上面的步骤,知道没有任何一对元素需要比较为止。
public static void main(String[] args) {
int[] arr= {12,8,26,15,2};
System.out.println("冒泡排序法前:");
printArray(arr);
bubbleShort(arr);
System.out.println("冒泡排序法后");
printArray(arr);
}
/**
* 定义打印数组元素的方法
* @param arr
*/
public static void printArray(int[] arr) {
//循环遍历数组中的元素
for (int i = 0; i < arr.length; i++) {
//打印元素和空格
System.out.print(arr[i]+" ");
}
System.out.println("\n");
}
/**
* 定义对数组排序的方法
* @param arr
*/
public static void bubbleShort(int[] arr) {
//定义外层循环
for (int i = 0; i < arr.length-1; i++) {
//定义内层循环
for (int j = 0; j < arr.length-i-1; j++) {
//比较相邻元素
if(arr[j]>arr[j+1]) {
//下面的三行代码用于交换两个元素
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
System.out.println("第"+(i+1)+"轮排序后:");
printArray(arr);
}
}