Java 语言中提供的数组是用来存储固定大小的同类型元素。 你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,….,number99。


一维数组

案例

数组的学习

  1. /**
  2. * @Auther: 小雷学长
  3. * @Date: 2021/7/10 - 10:11
  4. * @Version: 12
  5. */
  6. public class 数组的学习 {
  7. public static void main(String[] args) {
  8. /**
  9. * 数组的作用:用来存储相同类型的数据
  10. * 以int类型数据为例:数组用来存储int类型数据
  11. * 1.声明(定义数组)
  12. * 2.创建
  13. * 3.赋值
  14. * 4.使用
  15. */
  16. /*
  17. 1.声明
  18. 定义一个int类型的数组,名字叫arr
  19. */
  20. int[] arr;//int arr []
  21. /*
  22. 2.创建
  23. */
  24. arr = new int[4];
  25. /*
  26. 3.赋值
  27. */
  28. arr[0] = 12;
  29. arr[1] = 16;
  30. arr[2] = 23;
  31. arr[3] = 43;
  32. /*
  33. 4.使用
  34. */
  35. System.out.println("arr:" + arr[1]);
  36. //获取数组的长度
  37. System.out.println("数组的长度为:" + arr.length);
  38. }
  39. }

数组的引入

  1. import java.util.Scanner;
  2. /**
  3. * @Auther: 小雷学长
  4. * @Date: 2021/7/8 - 21:35
  5. * @Version: 12
  6. */
  7. public class 数组的引入 {
  8. public static void main(String[] args) {
  9. //功能:键盘录入是个学生的成绩,求平均数,求和
  10. Scanner in = new Scanner(System.in);
  11. //定义平均数变量
  12. int areaage = 0;
  13. //定义求和变量
  14. int sum = 0;
  15. //定义循环
  16. for (int i = 1; i <= 10; i++) {
  17. System.out.print("请输入第" + i + "个学生成绩:");
  18. int score = in.nextInt();
  19. sum += score;
  20. areaage = sum / 10;
  21. }
  22. System.out.println("学生成绩的和为:" + sum);
  23. System.out.println("学生成绩的平均数为:" + areaage);
  24. }
  25. }

数组的引入_进阶

  1. import java.util.Scanner;
  2. /**
  3. * @Auther: 小雷学长
  4. * @Date: 2021/7/10 - 10:38
  5. * @Version: 12
  6. */
  7. public class 数组的引入_进阶 {
  8. public static void main(String[] args) {
  9. //定义一个int类型的数组,长度为10
  10. int[] scores = new int[10];
  11. //定义一个求和变量
  12. int sum = 0;
  13. Scanner in = new Scanner(System.in);
  14. for (int i = 1; i <= 10; i++) {
  15. System.out.print("请输入第" + i + "个学生成绩:");
  16. int score = in.nextInt();
  17. scores[i - 1] = score;
  18. sum += score;
  19. }
  20. System.out.println("\n10个学生成绩之和为:" + sum);
  21. System.out.println("10个学生成绩的平均数为:" + sum / 10);
  22. //求第几个学生的成绩
  23. System.out.print("\n请输入要查询的学生成绩:");
  24. int student = in.nextInt();
  25. int StudentScore = scores[student - 1];
  26. System.out.println("第" + student + "个学生成绩为:" + StudentScore);
  27. }
  28. }

数组的最值问题

  1. import javax.swing.text.DefaultStyledDocument;
  2. /**
  3. * @Auther: 小雷学长
  4. * @Date: 2021/7/14 - 10:58
  5. * @Version: 12
  6. */
  7. public class 数组的最值问题 {
  8. /**
  9. * 实现一个功能:
  10. * 给定一个数组arr,求出数组中最大的数
  11. */
  12. public static void main(String[] args) {
  13. //定义数组arr
  14. int[] arr = {12, 3, 7, 4, 8, 125, 9, 45,7878};
  15. //假定最大的数为maxNum
  16. int maxNum = arr[0];
  17. //定义循环,使得每一个数组里的数都能与maxNum比较
  18. for (int i = 1; i < arr.length; i++) {
  19. if (maxNum < arr[i]) {
  20. maxNum = arr[i];
  21. }
  22. }
  23. System.out.println("数组里最大的数为:" + maxNum);
  24. }
  25. }

利用方法求最值

  1. /**
  2. * @Auther: 小雷学长
  3. * @Date: 2021/7/14 - 11:23
  4. * @Version: 12
  5. */
  6. public class 利用方法求最值 {
  7. public static void main(String[] args) {
  8. int[] arr = {12, 3, 7, 4, 8, 125, 9, 45, 7878, 9090};
  9. //使用getMaxNum(arr)调用方法并且接收maxNum返回值
  10. System.out.println("数组里最大的数为:" + getMaxNum(arr));
  11. }
  12. /**
  13. * @param arr
  14. * @return
  15. * @getMaxNum 定义方法
  16. */
  17. public static int getMaxNum(int[] arr) {
  18. int maxNum = arr[0];
  19. for (int i = 1; i < arr.length; i++) {
  20. if (maxNum < arr[i]) {
  21. maxNum = arr[i];
  22. }
  23. }
  24. //返回maxNum值
  25. return maxNum;
  26. }
  27. }

数组的查询

  1. import java.util.Scanner;
  2. /**
  3. * @Auther: 小雷学长
  4. * @Date: 2021/7/14 - 11:45
  5. * @Version: 12
  6. */
  7. public class 数组的查询 {
  8. public static void main(String[] args) {
  9. /**
  10. * 查询指定位置的元素
  11. */
  12. int[] arr = {12, 34, 54, 76, 23, 56, 76}; //定义一个数组
  13. //查询指定位置的数组元素
  14. System.out.println("该数组里索引为3的元素为:" + arr[2]);
  15. System.out.println(("\n----------------\n"));
  16. /**
  17. * 查询指定元素对应的位置
  18. */
  19. //定义一个数组
  20. int[] arr2 = {12, 34, 54, 76, 23, 56, 76};
  21. Scanner in = new Scanner(System.in);
  22. System.out.print("12, 34, 54, 76, 23, 56, 76" +
  23. "\n请输入要查询的数索引:");
  24. int value = in.nextInt();
  25. int result = -1;
  26. //查询76对应的索引是多少
  27. for (int i = 0; i < arr2.length; i++) {
  28. if (arr2[i] == value) {
  29. result = i;
  30. break;
  31. }
  32. }
  33. if (result != -1) {
  34. System.out.println("76在数组里对应的的索引为:" + result);
  35. } else {
  36. System.out.println("输入的数不存在!");
  37. }
  38. }
  39. }

数组的添加

  1. import javax.xml.transform.Source;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4. /**
  5. * @Auther: 小雷学长
  6. * @Date: 2021/7/18 - 17:06
  7. * @Version: 1.8
  8. */
  9. public class 数组的添加 {
  10. public static void main(String[] args) {
  11. //定义数组
  12. int[] arr = {12, 3, 45, 65, 46, 67};
  13. System.out.print("添加前的数组为:" + Arrays.toString(arr));
  14. Scanner in = new Scanner(System.in);
  15. System.out.print("\n请输入要添加数的索引位置:");
  16. int index = in.nextInt();
  17. System.out.print("请输入需要添加的数:");
  18. int value = in.nextInt();
  19. /**
  20. * 用for循环方法
  21. * arr[5] = arr[4];
  22. * arr[4] = arr[3];
  23. * arr[3] = arr[2];
  24. * arr[2] = arr[1];
  25. */
  26. for (int i = arr.length - 1; i >= index + 1; i--) {
  27. arr[i] = arr[i - 1];
  28. }
  29. arr[index] = value;
  30. System.out.print("添加后的数组为:" + Arrays.toString(arr));
  31. }
  32. }

数组的删除

  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. /**
  4. * @Auther: 小雷学长
  5. * @Date: 2021/7/18 - 16:24
  6. * @Version: 1.8
  7. */
  8. public class 数组的删除 {
  9. public static void main(String[] args) {
  10. //定义数组 0 1 2 3 4
  11. int[] arr = {43, 76, 23, 99, 425}; //length=5
  12. Scanner in = new Scanner(System.in);
  13. System.out.print("请输入要删除的数组索引:");
  14. int value = in.nextInt();//value = 1
  15. /**
  16. * arr[1] = arr[2]
  17. * arr[2] = arr[3]
  18. * arr[3] = arr[4]
  19. * arr[4] = 0
  20. */
  21. for (int i = value; i <= arr.length - 1 - 1; i++) {
  22. arr[i] = arr[i + 1];
  23. }
  24. //数组的末尾设置0
  25. arr[arr.length - 1] = 0;
  26. System.out.println("删除后的数组为:" + Arrays.toString(arr));
  27. }
  28. }

二维数组

二维数组的定义和遍历

  1. public class TestArray15{
  2. public static void main(String[] args){
  3. //定义一个二维数组:
  4. int[][] arr = new int[3][];//本质上定义了一个一维数组,长度为3
  5. int[] a1 = {1,2,3};
  6. arr[0] = a1;
  7. arr[1] = new int[]{4,5,6,7};
  8. arr[2] = new int[]{9,10};
  9. //读取6这个元素:
  10. //System.out.println(arr[1][2]);
  11. //对二维数组遍历:
  12. //方式1:外层普通for循环+内层普通for循环:
  13. for(int i=0;i<arr.length;i++){
  14. for(int j=0;j<arr[i].length;j++){
  15. System.out.print(arr[i][j]+"\t");
  16. }
  17. System.out.println();
  18. }
  19. //方式2:外层普通for循环+内层增强for循环:
  20. for(int i=0;i<arr.length;i++){
  21. for(int num:arr[i]){
  22. System.out.print(num+"\t");
  23. }
  24. System.out.println();
  25. }
  26. //方式3:外层增强for循环+内层增强for循环:
  27. for(int[] a:arr){
  28. for(int num:a){
  29. System.out.print(num+"\t");
  30. }
  31. System.out.println();
  32. }
  33. //方式4:外层增强for循环+内层普通for循环:
  34. for(int[] a:arr){
  35. for(int i=0;i<a.length;i++){
  36. System.out.print(a[i]+"\t");
  37. }
  38. System.out.println();
  39. }
  40. }
  41. }

二维数组的初始化

静态初始化

int [] [] arr = {{1,2,3},{4,5,6},{7,8,9}};
int [] [] arr = new int[] [] ``{{1,2,3},{4,5,6},{7,8,9}};

动态初始化

  1. public class 二维数组 {
  2. public static void main(String[] args) {
  3. int [] [] arr = new int[3][];
  4. arr[0] = new int []{1,2};
  5. arr[1] = new int []{3,4};
  6. arr[2] = new int []{5,6};
  7. for (int []a:arr){
  8. for (int num:a){
  9. System.out.print(num+"\t");
  10. }
  11. System.out.println();
  12. }
  13. }
  14. }

image.png