Java基础----数组

1. 概述

  • 数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。
  • Java中使用关键字 new 来创建数组
  • 数组的常见概念 :
      数组名
      下标(或索引)
      元素
      数组的长度
  • 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基础数据类型和引用数据类型。
  • 数组的长度一旦确定,就不能修改。
  • 可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
  • 数组的分类:
      按照维度: 一维数组、二维数组、多维数组
      按照元素的数据类型:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)

2. 一维数组

  • 声明: type[] var( Java的常用形式) 、 type var[]

     注意:Java语言中声明数组时不能指定其长度(数组中元素的数),例如: int arr[ 5 ]; // 非法

  • 初始化:
     动态初始化:int[] arr = new int[10]
           arr[0] = 值
     静态初始化:int[] arr = { 元素 元素和元素之间使用逗号隔开}
           int[] arr = new int[ ]{ 元素 };

  • 对于数组元素的引用:
      通过角标引用
      使用时 不能超出数组的下标的范围
      下标范围:0 ---- 数组长度 - 1

  • 数组存在的默认值:
      整型(byte、short、int、long)的默认值:0
      浮点型(float、double):0.0
      字符型:空格
      boolean:false

练习:

  • 从键盘读入学生成绩,找出最高分, 并输出学生成绩等级。
    成绩>=最高分-10  等级为’A’
    成绩>=最高分-20  等级为’B’
    成绩>=最高分-30  等级为’C’
    其余  等级为’D’
    提示:先读入学生人数,根据人数创建int数组, 存放学生成绩。
public static void main(String[] args){
        System.out.print("请输入学生人数:");
        Scanner sc = new Scanner(System.in);
        int stuNum = sc.nextInt();
        int[] scores = initArr(stuNum); // 创建一个保存成绩的数组

        // 记录成绩
        recordScore(scores);
        // 获取最高分
        int maxScore = getMax(scores);
        // 判定等级
        grade(scores,maxScore);
    }

    // 初始化一个数组
    public static int[] initArr(int length){
        return new int[length];
    }

    // 录入学生成绩
    public static void recordScore(int[] arr){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入"+ arr.length +"个学生成绩");
        for (int i = 0; i < arr.length ; i++) {
            arr[i] = sc.nextInt();
        }
    }

    // 获取最高分
    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 1;i < arr.length;i++){
            if (max < arr[i]){
                max = arr[i];
            }
        }
        System.out.println("最高分是:"+ max);
        return max;
    }

    // 判定等级
    public static void grade(int[] arr,int max){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= max - 10){
                System.out.println("学生"+ i +"的成绩为:"+ arr[i] +" ,等级为A");
            }else if (arr[i] >= max - 20){
                System.out.println("学生"+ i +"的成绩为:"+ arr[i] +" ,等级为B");
            }else if (arr[i] >= max - 30){
                System.out.println("学生"+ i +"的成绩为:"+ arr[i] +" ,等级为C");
            }else {
                System.out.println("学生"+ i +"的成绩为:"+ arr[i] +" ,等级为D");
            }
        }
    }

结果截图:

  • 数组元素的遍历:

    普通for:使用数组的属性 arr.length 来获取数组的长度
       for(int i = 开始索引; 索引的范围; 每次的步长){
         可以对数组中每一个元素进行精确操作;
       }

格式

for(int i = 0 ; i < arr1.length;i++) {
	System.out.println(arr1[i]);	
}

  增强 for / for … each:
   for(遍历对象的类型 每次遍历得到的对象的一个
     临时保存变量 :要遍历的对象(数组名称)){
       对数组所有元素的一个运算;
    }

格式:

for(int i : arr1) {// 1 是遍历对象的类型  2 每次遍历得到的数据保存的变量  3 遍历对象
	System.out.println(i);
}
  • 两者之间的区别:
      运算中,普通for 可以精确控制操作对象
      增强for 必须是整个数组的所有元素 无法精确控制每个元素

3. 二维数组

二维数组[ ] [ ] :数组中的数组

动态初始化
 int[ ][ ] arr = new int[5][5];
 int[][] arr = new int[5][ ];

静态初始化
 int[ ][ ] arr = new int[ ][ ]{{1,2,3},{4,5,6},{7,8,9}, {3,6,9}};

特殊形式
 //数组定义的特殊形式
  int[ ] x,y[ ]; // x是一维数组,y是二维数组
  x = new int[3];
  y = new int[5][ ];

提示:
  一维数组:int[ ] x 或者int x[ ]
  二维数组:int[ ][ ] y 或者 int[ ] y[ ] 或者 int y[ ][ ]

练习:

  • 使用二维数组,打印一个 10 行的杨辉三角
public static void main(String[] args) {
        int[][] arr = new int[10][10];
        arr[0][0] = 1;
        for (int i = 1;i<10;i++){
            arr[i][0] = 1;
            arr[i][i] = 1;
            for (int j = 1;j < i;j++){
                arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
            }
        }
        //遍历数组
        for (int i = 0;i<10;i++){
            for (int j = 0;j<=i;j++){
                System.out.print(arr[i][j] +"\t");
            }
            System.out.println();
        }
    }

结果截图:

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值