• Java的数组使用


    数组的定义:

    1. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    2. /**
    3. * 数组的作用:用来存储相同类型的数据
    4. * 以int类型数据为案例:数组用来存储int类型数据
    5. * 1》声明定义数组
    6. * int【】 arr 定义一个int类型的数组,名字为arr
    7. * int arr2【】
    8. * 如果数组只声明,没有后续操作,那么这个数组相当于没有定义
    9. * int 【】 arr3=null; 空 数组赋值为null和和什么都没有赋值 不一样的效果
    10. *
    11. * 2》创建
    12. * arr=new int【4】; 给数组开辟了一个长度为4的空间
    13. * int 【】arr=new int【4】;声明和创建和为一句话
    14. * 3》赋值
    15. * arr[0]=12;
    16. * arr[1]=1255;
    17. * arr[2]=1;
    18. * arr[3]=232;
    19. * ====================arr[4]=16452;-------------数组索引越界
    20. *
    21. * 4》使用
    22. *System.out.println(arr[1]);
    23. *数组的长度
    24. * System.out.println(arr.length);
    25. *
    26. *
    27. */
    28. public class TestArray02 {
    29. public static void main(String[] args) {
    30. }
    31. }

    数组的使用:

    1. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    2. import java.util.Scanner;
    3. /**
    4. * 功能:键盘录入十个学生的成绩,求和,求平均数
    5. *
    6. */
    7. public class TestArray03 {
    8. public static void main(String[] args) {
    9. int[] scores=new int[10];
    10. int sum=0;
    11. Scanner sc=new Scanner(System.in);
    12. for (int i = 0; i < 10; i++) {
    13. System.out.println("请录入第"+(i+1)+"个学生的成绩");
    14. int score=sc.nextInt();
    15. scores[i]=score;
    16. sum+=score;
    17. }
    18. System.out.println("十个学生的成句之和为"+sum);
    19. System.out.println("十个学生成绩平均数为:"+sum/10);
    20. //求取第6个学生的成绩
    21. // System.out.println(scores[5]);
    22. //数组的遍历----》方式一
    23. // for (int i = 0; i <= 9; i++) {
    24. // System.out.println(scores[i]);
    25. // }
    26. //增强for循环 ----------》方式二
    27. //对scores数组进行遍历,遍历出来每个元素都用int类型的num接收:
    28. // int count=0;
    29. // for(int num:scores){
    30. // //每次豆浆num在控制台输出
    31. // System.out.println("第"+count+"个学生的成绩为:"+num);
    32. // }
    33. /**
    34. * 增强for循环
    35. * 优点:代码简单
    36. * 缺点:单纯的增强for循环不能涉及跟索引相关的操作
    37. */
    38. //方式三:利用普通的for循环:逆向遍历:
    39. for (int i=9;i>=0;i++){
    40. System.out.println(scores[i]);
    41. }
    42. }
    43. }

    求取数组中的最大值

    1. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    2. /**
    3. * 求最大值
    4. */
    5. public class TestArray04 {
    6. public static void main(String[] args) {
    7. //1.定义一个数组
    8. int[] arr = {12, 3, 7, 4, 8, 125, 9, 45, 666, 36};
    9. //2.求出数组中的最大值:
    10. int num = getMaxNum(arr);
    11. System.out.println("当前数组中最大的数为:" + num);
    12. }
    13. public static int getMaxNum(int[] arr) {
    14. int maxNum = arr[0];
    15. for (int i = 0; i < arr.length; i++) {
    16. if (arr[i] > maxNum) {
    17. maxNum = arr[i];
    18. }
    19. }
    20. return maxNum;
    21. }
    22. }

    查询元素对应的索引

    1. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    2. public class TestArray05 {
    3. public static void main(String[] args) {
    4. int[] arr={12,34,56,7,3,10};
    5. System.out.println(arr[2]);
    6. //查询56对应的索引
    7. int index=getindex(arr,56);
    8. if (index!=-1){
    9. System.out.println("元素对应的索引:"+index);
    10. }else {
    11. System.out.println("查无此书!");
    12. }
    13. }
    14. public static int getindex(int []arr,int ele){
    15. int index=-1;//初始值只要不是数组的索引就行
    16. for (int i=0;i<arr.length;i++){
    17. if(arr[i]==ele){
    18. index=i;//只要找到了元素,那么index就变成i
    19. break;
    20. }
    21. }
    22. return index;
    23. }
    24. }

    数组添加元素

    1. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    2. import java.util.Scanner;
    3. public class TestArray07 {
    4. public static void main(String[] args) {
    5. //给定一个数组,在数组下标为2的位置上添加一个元素91
    6. int[] arr = {12, 34, 56, 7, 3, 10};
    7. //输出增加元素前的数组
    8. System.out.print("增加元素前的数组:");
    9. for (int i = 0; i < arr.length; i++) {
    10. if (i != arr.length - 1) {
    11. System.out.print(arr[i] + ",");
    12. } else {
    13. System.out.print(arr[i]);
    14. }
    15. }
    16. //从键盘接受数据
    17. Scanner sc=new Scanner(System.in);
    18. System.out.print("\n请录入你要添加元素的指定下标:");
    19. int index=sc.nextInt();
    20. System.out.print("请录入你要添加的元素:");
    21. int ele=sc.nextInt();
    22. //增加元素
    23. insertEle(arr,index,ele);
    24. /**
    25. * arr[5]=arr[4];
    26. * arr[4]=arr[3];
    27. * arr[3]=arr[2];
    28. */
    29. //输出后增加元素后的数组
    30. System.out.print("\n增加元素后的数组:");
    31. for (int i = 0; i < arr.length; i++) {
    32. if (i != arr.length - 1) {
    33. System.out.print(arr[i] + ",");
    34. } else {
    35. System.out.print(arr[i]);
    36. }
    37. }
    38. }
    39. /**
    40. * 提起一个添加元素的方法:
    41. * 在数组的指定位置上添加一个指定的元素
    42. * 在哪个数组的哪个位置添加哪个元素
    43. * 不确定因素:形参:哪个数组,哪个位置,哪个元素
    44. * 返回值:无
    45. */
    46. public static void insertEle(int []arr,int index ,int ele){
    47. for (int i = arr.length - 1; i >= (index+1); i--) {
    48. arr[i] = arr[i - 1];
    49. }
    50. arr[index] = ele;
    51. }
    52. }

    删除数组元素

    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 10:45
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray08
    6. * @Description: TODO 给定一个数组,删除下标为2元素
    7. * @Version 1.0
    8. */
    9. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    10. import java.util.Arrays;
    11. public class TestArray08 {
    12. public static void main(String[] args) {
    13. int[] arr = {12, 34, 56, 7, 3, 10};
    14. //输出删除前的数组:
    15. System.out.println("删除前的数组" + Arrays.toString(arr));
    16. //删除
    17. // arr[2]=arr[3];
    18. // arr[3]=arr[4];
    19. // arr[4]=arr[5];
    20. int index = 2;
    21. for (int i = index; i <= arr.length - 2; i++) {
    22. arr[i] = arr[i + 1];
    23. }
    24. arr[arr.length - 1] = 0;
    25. //输出删除后的数组
    26. System.out.println("删除后的数组" + Arrays.toString(arr));
    27. }
    28. }
    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 11:02
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray09
    6. * @Description: TODO
    7. * @Version 1.0
    8. */
    9. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    10. import java.util.Arrays;
    11. public class TestArray09 {
    12. public static void main(String[] args) {
    13. int[] arr = {12, 34, 56, 7, 3, 10,34,45,56,7,666};
    14. //输出删除前的数组:
    15. System.out.println("删除前的数组" + Arrays.toString(arr));
    16. //找到要删除的元素对应的索引即可
    17. int index = -1;
    18. for (int i=0;i<arr.length;i++){
    19. if (arr[i]==333){
    20. index=i;
    21. break;
    22. }
    23. }
    24. //删除
    25. // arr[2]=arr[3];
    26. // arr[3]=arr[4];
    27. // arr[4]=arr[5];
    28. // int index = 2;
    29. if (index!=-1){
    30. for (int i = index; i <= arr.length - 2; i++) {
    31. arr[i] = arr[i + 1];
    32. }
    33. arr[arr.length - 1] = 0;
    34. }else {
    35. System.out.println("根本没有你要删除的元素!");
    36. }
    37. //输出删除后的数组
    38. System.out.println("删除后的数组" + Arrays.toString(arr));
    39. }
    40. }

    可变参数

    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 14:09
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray12
    6. * @Description: TODO1)可变参数:作用提供了一个方法,参数的个数是可变的,解决了部分方法重载问题
    7. * int...num
    8. * double...num
    9. * boolean...num
    10. *
    11. * 2)可变参数在JDK1.5之后加入的新特性
    12. *3)方法的内部对可变参数的处理跟数组是一样的
    13. *4)可变参数和其它数据一起作为形参的时候,可变参数一定要放到最后
    14. * 5)我们自己在写代码的时候,建议不要使用可变参数
    15. * @Version 1.0
    16. */
    17. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    18. public class TestArray12 {
    19. public static void main(String[] args) {
    20. // method01(10);
    21. // method01();
    22. // method01(20,30,40);
    23. method01(30,40,50,60,70);
    24. // method01(new int[]{11,22,33,44});
    25. }
    26. public static void method01(int num2,int...num){
    27. System.out.println("--------------1");
    28. for (int i:num){
    29. System.out.println(i+"\t");
    30. }
    31. System.out.println();
    32. System.out.println(num2);
    33. }
    34. }

    数组的复制

    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 14:53
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray13
    6. * @Description: TODO
    7. * @Version 1.0
    8. */
    9. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    10. import java.util.Arrays;
    11. public class TestArray13 {
    12. public static void main(String[] args) {
    13. //给定一个数组:
    14. int[] arr={1,3,7,2,4,8};
    15. //toString:对数组进行遍历查看,返回的是一个字符串,这个字符串比较好看
    16. System.out.println(Arrays.toString(arr));
    17. //binarySearch:二分法查找,找出指定数组中的指定元素对应的索引
    18. //这个方法的使用的前提:一定要查看的是一个有序的数组:
    19. //sort:排序----》升序
    20. Arrays.sort(arr);
    21. System.out.println(Arrays.toString(arr));
    22. System.out.println(Arrays.binarySearch(arr,4));
    23. int[] arr2={1,3,7,2,4,8};
    24. //copyOf:完成数组的复制
    25. int [] newArr=Arrays.copyOf(arr2,4);
    26. System.out.println(Arrays.toString(newArr));
    27. //copyOfRange:区间复制:
    28. int [] newArr2=Arrays.copyOfRange(arr2,1,4);//[1,4)---->1,2,3位置
    29. System.out.println(Arrays.toString(newArr2));
    30. //equals:比较两个数组的值是否一样:
    31. int[] arr3={1,3,7,2,4,8};
    32. int[] arr4={1,3,7,2,4,8};
    33. System.out.println(Arrays.equals(arr3,arr4));//true
    34. System.out.println(arr3==arr4);// false ==比较左右两侧的值是否相等 比较的是左右的地址值,返回结果一定是false
    35. //fill:数组的填充
    36. int[] arr5={1,3,7,2,4,8};
    37. Arrays.fill(arr5,11);
    38. System.out.println(Arrays.toString(arr5));
    39. }
    40. }
    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 16:19
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray14
    6. * @Description: TODO
    7. * @Version 1.0
    8. */
    9. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    10. import java.lang.reflect.Array;
    11. import java.util.Arrays;
    12. public class TestArray14 {
    13. public static void main(String[] args) {
    14. //给一个源数组
    15. int [] srcArr={11,22,33,44,55,66,77,88};
    16. //给一个目标数组:
    17. int [] destArr=new int[10];
    18. //复制
    19. System.arraycopy(srcArr,1,destArr,3,3);
    20. //遍历查看目标数组:
    21. System.out.println(Arrays.toString(destArr));
    22. }
    23. }

    二维数组的遍历

    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 16:36
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray15
    6. * @Description: TODO--二维数组的定义与遍历
    7. * @Version 1.0
    8. */
    9. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    10. public class TestArray15 {
    11. public static void main(String[] args) {
    12. //定义一个二维数组
    13. int[][] arr=new int[3][];//本质上定义了一个一维数组,长度为3
    14. int[] a1={1,2,3};
    15. arr[0]=a1;
    16. arr[1]=new int[]{4,5,6,7};
    17. arr[2]=new int[]{9,10};
    18. //读取6这个元素
    19. // System.out.println(arr[1][2]);
    20. //遍历二维数组
    21. //方式1:外层普通for循环+内层普通for循环:
    22. // for (int i = 0; i <= 2; i++) {
    23. // for (int j=0;j<arr[i].length;j++){
    24. // System.out.print(arr[i][j]+"\t");
    25. // }
    26. // System.out.println();
    27. // }
    28. //方式2:外层普通for循环+内层增强for循环
    29. // for (int i=0;i<arr.length;i++){
    30. // for (int num:arr[i]){
    31. // System.out.print(num+"\t");
    32. // }
    33. // System.out.println();
    34. // }
    35. //方式3:外层增强for循环+内层增强for循环
    36. // for (int[]a:arr){
    37. // for (int num:a){
    38. // System.out.print(num+"\t");
    39. // }
    40. // System.out.println();
    41. // }
    42. //方式5:外层增强for循环+内层普通for循环
    43. for (int[]a:arr){
    44. for (int i=0;i<a.length;i++){
    45. System.out.print(a[i]+"\t");
    46. }
    47. System.out.println();
    48. }
    49. }
    50. }
    1. /**
    2. * @Author zhengwang
    3. * @Date 2023/11/7 16:57
    4. * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
    5. * @ClassName: TestArray16
    6. * @Description: TODO
    7. * @Version 1.0
    8. */
    9. package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
    10. public class TestArray16 {
    11. public static void main(String[] args) {
    12. int[][] arr=new int[3][2];
    13. //本质上:定义一维数组,长度为3,每个数组“格子”中,有一个默认的长度为2的数组
    14. arr[1]=new int[]{1,2,3,4};
    15. //数组遍历
    16. for (int[] a:arr){
    17. for (int num:a){
    18. System.out.print(num+"\t");
    19. }
    20. System.out.println();
    21. }
    22. }
    23. }

  • 相关阅读:
    【东软实训Day2】用Java实现客户端与服务器交互
    数据治理平台项目总结和分析
    自顶向下计算机网络学习 传输层
    Python测试题12道(含答案)
    华为机试真题 C++ 实现【找终点】
    shiro原理解析
    StarGAN v2: Diverse Image Synthesis for Multiple Domains (多域多样性图像合成)
    Docker SpringBoot项目连接本地数据库
    C语言百钱买百鸡(ZZULIOJ1074:百钱买百鸡)
    数字孪生与GIS的完美融合
  • 原文地址:https://blog.csdn.net/weixin_45503872/article/details/134273436