Java 语言中提供的数组是用来存储固定大小的同类型元素。 你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,….,number99。
一维数组
案例
数组的学习
/*** @Auther: 小雷学长* @Date: 2021/7/10 - 10:11* @Version: 12*/public class 数组的学习 {public static void main(String[] args) {/*** 数组的作用:用来存储相同类型的数据* 以int类型数据为例:数组用来存储int类型数据* 1.声明(定义数组)* 2.创建* 3.赋值* 4.使用*//*1.声明定义一个int类型的数组,名字叫arr*/int[] arr;//int arr []/*2.创建*/arr = new int[4];/*3.赋值*/arr[0] = 12;arr[1] = 16;arr[2] = 23;arr[3] = 43;/*4.使用*/System.out.println("arr:" + arr[1]);//获取数组的长度System.out.println("数组的长度为:" + arr.length);}}
数组的引入
import java.util.Scanner;/*** @Auther: 小雷学长* @Date: 2021/7/8 - 21:35* @Version: 12*/public class 数组的引入 {public static void main(String[] args) {//功能:键盘录入是个学生的成绩,求平均数,求和Scanner in = new Scanner(System.in);//定义平均数变量int areaage = 0;//定义求和变量int sum = 0;//定义循环for (int i = 1; i <= 10; i++) {System.out.print("请输入第" + i + "个学生成绩:");int score = in.nextInt();sum += score;areaage = sum / 10;}System.out.println("学生成绩的和为:" + sum);System.out.println("学生成绩的平均数为:" + areaage);}}
数组的引入_进阶
import java.util.Scanner;/*** @Auther: 小雷学长* @Date: 2021/7/10 - 10:38* @Version: 12*/public class 数组的引入_进阶 {public static void main(String[] args) {//定义一个int类型的数组,长度为10int[] scores = new int[10];//定义一个求和变量int sum = 0;Scanner in = new Scanner(System.in);for (int i = 1; i <= 10; i++) {System.out.print("请输入第" + i + "个学生成绩:");int score = in.nextInt();scores[i - 1] = score;sum += score;}System.out.println("\n10个学生成绩之和为:" + sum);System.out.println("10个学生成绩的平均数为:" + sum / 10);//求第几个学生的成绩System.out.print("\n请输入要查询的学生成绩:");int student = in.nextInt();int StudentScore = scores[student - 1];System.out.println("第" + student + "个学生成绩为:" + StudentScore);}}
数组的最值问题
import javax.swing.text.DefaultStyledDocument;/*** @Auther: 小雷学长* @Date: 2021/7/14 - 10:58* @Version: 12*/public class 数组的最值问题 {/*** 实现一个功能:* 给定一个数组arr,求出数组中最大的数*/public static void main(String[] args) {//定义数组arrint[] arr = {12, 3, 7, 4, 8, 125, 9, 45,7878};//假定最大的数为maxNumint maxNum = arr[0];//定义循环,使得每一个数组里的数都能与maxNum比较for (int i = 1; i < arr.length; i++) {if (maxNum < arr[i]) {maxNum = arr[i];}}System.out.println("数组里最大的数为:" + maxNum);}}
利用方法求最值
/*** @Auther: 小雷学长* @Date: 2021/7/14 - 11:23* @Version: 12*/public class 利用方法求最值 {public static void main(String[] args) {int[] arr = {12, 3, 7, 4, 8, 125, 9, 45, 7878, 9090};//使用getMaxNum(arr)调用方法并且接收maxNum返回值System.out.println("数组里最大的数为:" + getMaxNum(arr));}/*** @param arr* @return* @getMaxNum 定义方法*/public static int getMaxNum(int[] arr) {int maxNum = arr[0];for (int i = 1; i < arr.length; i++) {if (maxNum < arr[i]) {maxNum = arr[i];}}//返回maxNum值return maxNum;}}
数组的查询
import java.util.Scanner;/*** @Auther: 小雷学长* @Date: 2021/7/14 - 11:45* @Version: 12*/public class 数组的查询 {public static void main(String[] args) {/*** 查询指定位置的元素*/int[] arr = {12, 34, 54, 76, 23, 56, 76}; //定义一个数组//查询指定位置的数组元素System.out.println("该数组里索引为3的元素为:" + arr[2]);System.out.println(("\n----------------\n"));/*** 查询指定元素对应的位置*///定义一个数组int[] arr2 = {12, 34, 54, 76, 23, 56, 76};Scanner in = new Scanner(System.in);System.out.print("12, 34, 54, 76, 23, 56, 76" +"\n请输入要查询的数索引:");int value = in.nextInt();int result = -1;//查询76对应的索引是多少for (int i = 0; i < arr2.length; i++) {if (arr2[i] == value) {result = i;break;}}if (result != -1) {System.out.println("76在数组里对应的的索引为:" + result);} else {System.out.println("输入的数不存在!");}}}
数组的添加
import javax.xml.transform.Source;import java.util.Arrays;import java.util.Scanner;/*** @Auther: 小雷学长* @Date: 2021/7/18 - 17:06* @Version: 1.8*/public class 数组的添加 {public static void main(String[] args) {//定义数组int[] arr = {12, 3, 45, 65, 46, 67};System.out.print("添加前的数组为:" + Arrays.toString(arr));Scanner in = new Scanner(System.in);System.out.print("\n请输入要添加数的索引位置:");int index = in.nextInt();System.out.print("请输入需要添加的数:");int value = in.nextInt();/*** 用for循环方法* arr[5] = arr[4];* arr[4] = arr[3];* arr[3] = arr[2];* arr[2] = arr[1];*/for (int i = arr.length - 1; i >= index + 1; i--) {arr[i] = arr[i - 1];}arr[index] = value;System.out.print("添加后的数组为:" + Arrays.toString(arr));}}
数组的删除
import java.util.Arrays;import java.util.Scanner;/*** @Auther: 小雷学长* @Date: 2021/7/18 - 16:24* @Version: 1.8*/public class 数组的删除 {public static void main(String[] args) {//定义数组 0 1 2 3 4int[] arr = {43, 76, 23, 99, 425}; //length=5Scanner in = new Scanner(System.in);System.out.print("请输入要删除的数组索引:");int value = in.nextInt();//value = 1/*** arr[1] = arr[2]* arr[2] = arr[3]* arr[3] = arr[4]* arr[4] = 0*/for (int i = value; i <= arr.length - 1 - 1; i++) {arr[i] = arr[i + 1];}//数组的末尾设置0arr[arr.length - 1] = 0;System.out.println("删除后的数组为:" + Arrays.toString(arr));}}
二维数组
二维数组的定义和遍历
public class TestArray15{public static void main(String[] args){//定义一个二维数组:int[][] arr = new int[3][];//本质上定义了一个一维数组,长度为3int[] a1 = {1,2,3};arr[0] = a1;arr[1] = new int[]{4,5,6,7};arr[2] = new int[]{9,10};//读取6这个元素://System.out.println(arr[1][2]);//对二维数组遍历://方式1:外层普通for循环+内层普通for循环:for(int i=0;i<arr.length;i++){for(int j=0;j<arr[i].length;j++){System.out.print(arr[i][j]+"\t");}System.out.println();}//方式2:外层普通for循环+内层增强for循环:for(int i=0;i<arr.length;i++){for(int num:arr[i]){System.out.print(num+"\t");}System.out.println();}//方式3:外层增强for循环+内层增强for循环:for(int[] a:arr){for(int num:a){System.out.print(num+"\t");}System.out.println();}//方式4:外层增强for循环+内层普通for循环:for(int[] a:arr){for(int i=0;i<a.length;i++){System.out.print(a[i]+"\t");}System.out.println();}}}
二维数组的初始化
静态初始化
int [] [] arr = {{1,2,3},{4,5,6},{7,8,9}};int [] [] arr = new int[] [] ``{{1,2,3},{4,5,6},{7,8,9}};
动态初始化
public class 二维数组 {public static void main(String[] args) {int [] [] arr = new int[3][];arr[0] = new int []{1,2};arr[1] = new int []{3,4};arr[2] = new int []{5,6};for (int []a:arr){for (int num:a){System.out.print(num+"\t");}System.out.println();}}}

