什么是数组
数组就是一组数据的集合,数组中的每个数据被称为元素,数组中可以存放任意类型的数据,但同一个数组存放的元素类型必须一致。
数组的定义
//x是声明的变量,类型为int[],10代表数组的长度,此数组长度为10
int[] x = new int[10];
内存图: 数组中的每一个元素都有一个索引(也称角标),想要访问数组中的元素可以通过x[0],x[1],x[2]这样的方式来访问,注意数组中的最小索引是0,最大索引是"数组的长度-1"。数组中有一个获取数组度的属性length属性,可以通过"数组名.length"的方法来获取数组的长度,也就是元素的个数。
public class Example04 {
public static void main(String[] args) {
int[] x = new int[3];
System.out.println(x[0]);
System.out.println(x[1]);
System.out.println(x[2]);
System.out.println("数组的长度为:" + x.length);
}
}
结果为:
从结果可以看出数组中的每个元素都是0,为什么会出现这种情况呢,这是因为数组创建成功后,系统会自动为数组中的元素赋予一个默认值,系统根据元素类型的不同,默认值不同
数据类型 | 默认初始值 |
---|---|
byte,short,int,long | 0 |
float,double | 0.0 |
char | 一个空字符,\u0000 |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
如果我们不想使用默认值,可以为元素赋值
public class Example05 {
public static void main(String[] args) {
int[] x = new int[3];
x[0] = 10;//为第一个元素赋值
x[1] = 20;//为第二个元素赋值
x[2] = 30;//为第三个元素赋值
System.out.println(x[0]);
System.out.println(x[1]);
System.out.println(x[2]);
System.out.println("数组的长度为:" + x.length);
}
}
结果:
在定义数组时我们只指定了数组的长度,由系统自动为元素赋值的方式称为动态初始化
还有一种初始化数组时的方式叫做静态初始化,就是在定义数组的同时就是为数组每个元素赋值
public class Example06 {
public static void main(String[] args) {
//类型[] 数组名 = {元素,元素,元素,....}
//静态初始化
int[] x = {1,2,4};
System.out.println(x[0]);
System.out.println(x[1]);
System.out.println(x[2]);
System.out.println("数组的长度为:" + x.length);
}
}
数组的常见操作
-
数组的遍历:在操作数组的时候,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。
public class Example07 { public static void main(String[] args) { int[] arr = {1,2,3,4,5,6}; for (int i = 0;i < arr.length;i++){ //通过索引访问元素 System.out.println(arr[i]); } } }
-
数组的最值,求数组的最大值
public class Example08 { public static void main(String[] args) { int[] arr = {10,25,100,21,20}; //默认数组第一个元素为最大值 int max = arr[0]; for (int i = 0;i < arr.length;i++){ //比较arr[i]的值是否大于max if (arr[i] > max){ //条件成立将该元素重新赋值给max max = arr[i]; } } System.out.println("该数组的最大值为:" + max); } }
-
数组的排序,冒泡排序
public class Example09 { public static void main(String[] args) { int[] arr = {4, 1, 5, 7, 9}; System.out.print("排序前:"); printArray(arr); bubbleSort(arr); System.out.print("排序后:"); printArray(arr); } //排序方法 public static void bubbleSort(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.print("第"+(i + 1)+"轮排序后:"); printArray(arr); } } //打印方法 public static void printArray(int[] arr){ for (int i = 0; i < arr.length; i++){ System.out.print(arr[i] + " "); } System.out.print("\n"); } }