- 什么是数组
数组就是一组数据的集合,数组中的每个数据被称为元素,数组中可以存放任意类型的数据,但同一个数组存放的元素类型必须一致。
- 数组的定义
int[] x = new int[10];//x是声明的变量,类型为int[],10代表数组的长度,此数组长度为10
内存图: 数组中的每一个元素都有一个索引(也称角标),想要访问数组中的元素可以通过x[0],x[1],x[2]这样的方式来访问,注意数组中的最小索引是0,最大索引是"数组的长度-1"。数组中有一个获取数组度的属性length属性,可以通过"数组名.length"的方法来获取数组的长度,也就是元素的个数。
public class Example04 {
public static void main(String[] args) {
System.out.println(sum);
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,为什么会出现这种情况呢,这是因为数组创建成功后,系统会自动为数组中的元素赋予一个默认值,系统根据元素类型的不同,默认值不同。如下图:
如果我们不想使用默认值,可以为元素赋值
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 sum = Example04.getSum(5);
System.out.println(sum);
//类型[] 数组名 = {元素,元素,元素,....}
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);
}
}
- 数组的常见操作
3.1,数组的遍历:在操作数组的时候,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。
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]);
}
}
}
3.2,数组的最值:
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++){
if (arr[i] > max){
//比较arr[i]的值是否大于max
max = arr[i];//条件成立将该元素重新赋值给max
}
}
System.out.println("该数组的最大值为:" + max);
}
}
3.3,数组的排序
冒泡排序:
public class Example09 {
public static void main(String[] args) {
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");
}
}
加油吧!