目录
1.为什么需要数组?
2.数组的介绍
3.数组的快速入门
4.数组的使用
5.动态初始化
6.静态初始化
7.数组的细节
8.数组的赋值机制
9.数组拷贝
10.数组反转
11.二维数组
12.冒泡排序
有五个学生,他们英语成绩分别为60,70,90,80,50.用程序求几个同学总成绩是多少,平均分多少?
常规写法:定义五个变量,加起来就是总成绩,除以5就是平均成绩。这样定义很多变量是的程序非常繁琐。我们可以用数组来实现这个问题。
数组可以存放多个同一类型的数据。数组也是一种数据类型,它是引用数据类型。
我们通过代码实现上面五个学生的问题:
public class Array01{
public static void main(String[] args){
//有五个学生,他们英语成绩分别为60,70,90,80,50用程序求几个同学总成绩是多少,平均分多少?
//传统方式:
double s1 = 60;
double s2 = 70;
double s3 = 90;
double s4 = 80;
double s5 = 50;
double sum = s1 + s2 + s3 + s4 + s5;
double avg = sum / 5;
System.out.println("总成绩为:"+ sum + ", 平均成绩为:"+ avg);
//以上这种方式难免有些繁琐了,我们使用数组可以很简单的解决这个问题。
//1.定义一个double类型的数组,把成绩存到数组中
double[] arrays = {60,70,90,80,50};
//2.数组是从0开始,所以下标为arrays[0]就是第一个数;第二个数就是arrays[1],以此类推...
//3.通过for循环可以访问数组的5个元素值
double sum2 = 0;
for(int i = 0 ; i < arrays.length ; i++){
sum2 += arrays[i];
}
System.out.println("总成绩为:"+ sum2 + ", 平均成绩为:"+ sum2/arrays.length);
}
}
语法:数据类型 数组名[] 或者 数据类型[] 数组名;例如:int[] a;
语法:数组名 = new 数据类型[大小] 例如:a = new int[10];
将int[] arr1 = {11,22,33};拷贝到arr2数组中。
public static void main(String[] args){
//将int[] arr1 = {11,22,33};拷贝到arr2数组
int[] arr1 = {11,22,33};
int[] arr2 = new int[arr1.length];
//把arr1的所有元素赋到arr2中
for(int i = 0 ; i < arr1.length ; i++){
arr2[i] = arr1[i];
}
//输出arr2查看
for(int i = 0 ; i < arr2.length ; i++){
System.out.println(arr2[i]);
}
}
把数组中的数反转:arr{11,22,33,44,55,66,77} arr{77,66,55,44,33,22,11}
逆序赋值的方式:
public class arr{
public static void main(String[] args){
int[] arr = {11,22,33,44,55,66,77};
//创建一个空的且同等大小的数组
int[] arr2 = new int[arr.length];
//逆序遍历
for(int i = arr.length-1,j = 0;i>=0;i--,j++{
arr2[j] = arr[i];
}
}
}
动态初始化
语法:类型[][] 数组名 = new 类型[大小][大小] 如:int a[][] = new int[3][3];
二维数组在内存的形式:
动态初始化
类型 数组名[][] = new 类型[大小][大小];
静态初始化
类型 数组名[][] = {{1,1},{2,2},{1,2}};
使用细节
二维数组的声明方式:int[][] a ,int[] a[] ,int a[][]
二维数组实际上是多个数组组成的
思想:通过排序从后向前依次比较相邻元素的值,若发现逆序则交换,使值较大的往后移。像气泡一样逐渐向上浮。
举例说明:我们将五个无序的:33,22,55,11,44使用冒泡排序将其排成从小到大有序的数列
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {33, 22, 55, 11, 44};
int temp;
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]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("从小到大排序后的数组为:");
for (int num : arr) {
System.out.print(num + " ");
}
}
}