罗列
数组的遍历
获取数组的最值
数组元素的交换
数组的反转
数组元素的查找
数组的排序
数组的遍历
- 概述:获取数组中的每一个元素
- 思路:
通过循环获取数组中的每一个索引
在通过数组名称将获取索引对应元素值使用 - 获取数组长度的属性:
数组名称.length
代码
class Demo05 {
public static void main(String[] args) {
int[] arr = {10,20,30,40,50,60,70,80,90};
//System.out.println(arr.length);
//可以使用循环获取有序的索引
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
}
}
获取数组的最值
- 概述:获取数组中元素的最大值和最小值
- 思路:
(1)先定义一个变量,用来存储最大值
(2)依次获取数组中的每一个元素,分别两两比较
(3)比较之后,大的元素就存储在变量中
(4)当每一个元素都比完一遍之后,变量中存储的就是最大值 - 注意事项:
定义的最大值max变量中,不能存储数组之外的元素。必须赋予一个数组中的元素
代码
class Demo06 {
public static void main(String[] args) {
int[] arr = {-1,-5,-10,-9,-3,-7,-66};
//定义一个变量,用来存储最大值
int max = arr[0];
//使用循环获取每一个元素
for(int i = 0;i <= arr.length-1;i++){
//将获取的每一个元素分别和max中存储的数据比较
//如果大于就替换max原有的值,如果不大于,就不替换
if(arr[i] > max){
max = arr[i];
}
}
//打印最大值
System.out.println("数组元素的最大值为:" + max);
}
}
数组元素的交换
- 概述:给定两个索引,交换两个索引位置上的元素
代码
import java.util.Scanner;
class Demo07 {
public static void main(String[] args) {
int[] arr = {10,20,30,40,50};
Scanner sc = new Scanner(System.in);
System.out.println("请录入第一个元素的索引");
int x = sc.nextInt();
System.out.println("请录入第二个元素的索引");
int y = sc.nextInt();
//声明一个第三方变量,用于交换数据
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
for(int i = 0;i <= arr.length-1;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
数组的反转
- 概述:将数组中的元素,进行逆序排列。
- 图示:
代码
class Demo08 {
public static void main(String[] args) {
int[] arr = {9,-20,30,404,0,100};
for(int i = 0;i <= arr.length-1;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
for(int i = 0,j = arr.length-1;i < j;i++,j--){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
for(int i = 0;i <= arr.length-1;i++){
System.out.print(arr[i] + " ");
}
}
}
数组元素的查找
- 概述:随便给定一个元素,获取该元素在数组中的索引
- 思路:
(1)先获取数组中的每一个元素
(2)将获取的每一个元素分别和已知的元素x比较
(3)如果数组中有元素和x相等的,就将该元素的索引给保存
(4)如果数组中没有元素和x相等,就不做任何操作 - 注意事项:
可以定义一个变量,用来存储索引,这个变量的初始值不能为数组中的元素索引
代码
import java.util.Scanner;
class Demo09 {
public static void main(String[] args) {
int[] arr = {10,20,30,40,50,10,20,30};
Scanner sc = new Scanner(System.in);
System.out.println("请录入第一个元素的索引");
int x = sc.nextInt();
int index = -1;
//获取数组中的每一个元素
for(int i = 0;i <= arr.length-1;i++){
if(x == arr[i]){
index = i;
//break;
}
}
if(index == -1){
System.out.println("数组中没有该元素");
}else{
System.out.println(x + "元素的数组中的索引为:" + index);
}
}
}
数组的排序
- 概念:将数组中的元素按照一定的顺序排列。
- 冒泡排序:
将数组中相邻的元素比较,如果前面的元素值比较大,就交换,否则不交换
代码
class Demo10 {
public static void main(String[] args) {
int[] arr = {8,6,3,1,4,10,0};
//外层循环,表示数组中的元素需要比较几轮
//比较的轮数比元素个个数少一次即可
for(int k = 0;k <= arr.length-2;k++){
//通过内层循环获取数组中的每一个元素
for(int i = 0;i <= arr.length-2-k;i++){
//如果数组中前面的元素值比相邻后面元素大
//就需要让元素值大的放在后面,所以需要交换位置
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
//将排序后的数组遍历
for(int i = 0;i <= arr.length-1;i++){
System.out.print(arr[i] + " ");
}
}
}
二维数组【了解】
-
概述:如果一个数组中存储的是另外一些一维数组的地址,那么该数组就是一个二维数 组。
-
二维数组的初始化方式:
动态初始化:
元素的数据类型[][] 数组名称 = new 元素的数据类型[一维数组的个数][元素的个数];
说明:
(1)元素的数据类型:表示二维数组中的一维数组存储元素的数据类型
(2)[][]:表示当前数组是一个二维数组
(3)数组名称:给二维数组起一个名字
(4)new:表示在堆内存中给数组分配空间的关键字
(5)一维数组的个数:表示二维数组中存储了几个一维数组
(6)元素的个数:表示每一个一维数组中存储了多少个元素 -
图示:
-
静态初始化数组:
元素的数据类型[][]
数组名称 ={{1,2,3},{100,200,300},{-1,-2,0,-3}};