Java中的数组及其简单应用

目录

一、数组的概念

二、一维数组

(1)一维数组的创建

(2)遍历一维数组

(3)Arrays工具类的简单使用

三、二维数组

(1)二维数组的创建

(2)遍历二维数组


一、数组的概念

数组是一个变量,一个装数据的容器,存储多个相同类型的数据

由数组名、元素类型、元素、下标组成(从0开始)

二、一维数组

(1)一维数组的创建

1)第一步:声明数组: 数据类型[] 数组名; 或者 数据类型 数组名[];
第二步:分配空间,告诉你声明的数组里可以存储多少个数据,数组名 = new 数据类型[数组元素个数];
第三步:给数组赋值,将数据存储到数组中,数组名[下标] = 数据;

2)声明数组、分配空间也可以合并写
数据类型[] 数组名 = new 数据类型[数组长度];  或者  

数据类型 数组名[] = new 数据类型[数组长度];

然后进行赋值

3)也可以在声明数组、分配空间时就进行赋值
数据类型[] 数组名 = new 数据类型[]{数据1,数据2,....,数据n};

注意:= 后面的[]里不要写数组长度。

一维数组的声明、分配空间、赋值合并的简写方式
数据类型[] 数组名 = {数据1,数据2,...,数据n};

(2)遍历一维数组

1)按照元素在数组中的位置顺序输出

for(int i = 0;i< nums.length;i++){
            System.out.print(nums[i]+" ");
        }

2)使用增强for循环来遍历
        for (数据类型 变量名: 数组名){
            System.out.println(变量名);
        }
执行规律:按照数组中元素的顺序依次将元素取出来存入变量中,操作变量a相当于操作数组中的元素

应用:如何在数组中插入一个元素

1)新建一个比原来数组长度大于1的数组
2)将原来数组里面的元素按照顺序存储到新的数组中
3)使用Scanner获取要增加的学员成绩
4)通过循环比较,获取插入元素要插入元素的下标
5)从插入位置开始及之后的元素依次往后移动一位(从后向前移动)
6)移动元素后,将插入元素存储到要插入的位置

int grade1[] = {99,85,82,63,60};
//        1)新建一个比原来数组长度大于1的数组
        int grade[] = new int[grade1.length+1];
//        2)将原来数组里面的元素按照顺序存储到新的数组中
        for (int i = 0;i<grade1.length;i++){
            grade[i] = grade1[i];
        }
//        3)使用Scanner获取要增加的元素
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入新增的元素:");
        int score = sc.nextInt();
        int index = grade.length-1;
//        4)通过循环比较,获取插入元素要插入元素的下标
        for (int i = 0; i < grade.length; i++) {
            if (score > grade[i]) {
                index = i;
                break;
            }
        }
//        5)从插入位置开始及之后的元素依次往后移动一位(从后向前移动)
        for (int j = grade.length - 1; j > index; j--) {
            grade[j] = grade[j - 1];
        }
//        6)移动元素后,将插入元素存储到要插入的位置
        grade[index] = score;
        System.out.println("替换元素的下标是:" + index);
        System.out.println("替换后的元素排序是:");
//        循环遍历新的数组
        for (int k = 0; k < grade.length; k++) {
            System.out.print(grade[k] + " ");
        }

(3)Arrays工具类的简单使用

1)Arrays类的sort()方法: 对数组进行升序排列

2)Arrays.equals(数组名1, 数组名2)比较array1和array2两个数组是否相等

3)Arrays.toString(数组名)将一个数组array转换成一个字符串

4)Arrays.fill(nums,val)把数组array所有元素都赋值为val

5)Arrays.copyOf(数组名, newlength)把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致

6)Arrays.binarySearch(数组名, 数组元素)查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)

三、二维数组

二维数组:即数组的嵌套,数组里面的元素又是一个数组

(1)二维数组的创建

1)声明二维数组:  数据类型[][] 数组名;   或者  数据类型 数组名[][];
分配空间(告诉你这个数组里可以存储多少个元素):   数组名 = new 数据类型[数组长度][数组长度];  或者 数组名 = new 数据类型[数组长度][];
注意:二维数组在分配空间的时候,第一个数组长度必须要写,告诉你这个二维数组里有多少个元素,
          第二数组长度可以写,可以不写,不过写了,表示这个二维数组里的里面的元素(一维数组)的长度,
          如果没有写,这个二维数组里面的元素(一维数组)长度可以不一样
赋值:数组名[下标][下标] = 数据;

2)声明数组、分配空间也可以合并写

数据类型[][] 数组名=new 数据类型[数组长度][数组长度];  或者  数据类型[][] 数组名=new 数据类型[数组长度][];

3)二维数组的声明、分配空间、赋值合并写

数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};   注意:new后面的两个[][]里都不能写数组长度

二维数组的声明、分配空间、赋值合并的简写方式
数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};

(2)遍历二维数组

int nums[][] = {{1,2,3},{4,5},{6,7,8}};
        for(int i =0;i<nums.length;i++){
//            nums[i]又是一个一维数组,对这个一维数组nums[i]再次进行循环
            for(int j =0;j<nums[i].length;j++){
                System.out.println(nums[i][j]);
            }
        }

应用:已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩

double nums[][] = new double[3][5];
        Scanner sc = new Scanner(System.in);
        for(int i = 0;i<nums.length;i++){
            System.out.println("---------第"+(i+1)+"个班---------");
            for(int j = 0;j<nums[i].length;j++){
                System.out.print("请输入第"+(j+1)+"个学生的成绩:");
                nums[i][j] = sc.nextInt();
            }
            System.out.println();
        }
        System.out.println("---------成绩统计---------");
        for(int i = 0;i<nums.length;i++){
            double sum = 0.0;
            for(int j = 0;j<nums[i].length;j++){
                sum += nums[i][j];
            }
            System.out.print((i+1)+"班总成绩:"+sum);
            System.out.println();
        }
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值