java 数组

本文详细介绍了Java中的数组概念,将其比喻为酒店房间、足球球队等,便于理解。数组是一个固定大小的容器,用于存储相同类型的数据。文章阐述了为何使用数组以避免大量对象创建的繁琐,以及数组的声明、分配空间、初始化和遍历方法。此外,还讲解了二维数组的创建,并展示了水果摊的例子。在处理数组数据时,需要注意数组下标的范围,防止数组越界。最后,提供了两种常见的数组遍历方式:普通循环和foreach循环。
摘要由CSDN通过智能技术生成

1、什么是数组

        以酒店庄园为例,一个房间对应一个数据,一层楼对应一维数组,一栋楼对应二维数组,一个庄园对应三维数组,高维数组可以容纳若干低维数组,以此类推。

        一个酒店可以开辟不同类型的房间,如单人间、双人间、情侣房、大床房等等,而数组不同,从创建之初,只能从一而终地容纳一种类型的数据。

        或者可以将它理解为一个容器,鞋柜只能装鞋,冰箱只能放食物,不能将鞋放到冰箱里,也不能将食物放到鞋柜里。因此,若是 int[] 类的数组,就只能放整型数据,不能容纳其他数据类型,否则编译无法通过。

2、为什么要使用数组

        当我们只需要创建一两个对象时,三两下就创建出来了,这并不费时间。但当我们需要创建100个对象,或者更多呢?是不是需要重复创建100次?而且每一个对象都需要一个变量名来特指,这会让编程过程变成一件非常痛苦的事情。而数组恰好完美的规避了这个问题,数组是一个变量,是存储相同数据类型的一组数据。

3、数组的基本要素

        一个数组会包含四个要素:元素类型、标识符、数组元素和元素下标

        以足球球队为例,首先我们需要知道这个足球球队代表哪一个国家,可以是中国的、可以是加拿大的,而球队所属国家要求队员们只能隶属于该国,不允许出现隶属于其他国家的成员;而一个国家也会有很多球队,此时我们需要给这个球队以区分与其他球队,即球队的名字;在球队中,人数是有限制的,或许是5人,或许是11人,超出这个上限将不会被纳入;在赛场上,很容易混淆球员,因此需要为每个球员进行编号,一个编号对应一个队员。

        数组也是如此,元素类型即使索要存放数据类型,也就是球队所代表的国家;标识符也就是数组的名称,以区分其他不同的数组,也就是球队的名字;数组的元素有两个方面,一个是数组大小,也就是球队的人数限制,另一个是元素,也就是球员本身;数组下标则是足球球队里队员的编号,一个下标对应一个元素,在访问数组时,就是对元素下标的访问。

4、数组的使用

        声明数组:数组中保存的类型(常采用第一种声明方法)

    int[] scores;
    String names[];

        分配空间:数组的空间分配不同于基本数据类型,数组所分配的空间时若干个连续的地址,在栈空间中保存变量名,在堆空间中分配地址,这个部分我们在 浅谈java内存 这一章中有所谈及,这里不做赘述

        赋值:也叫数组的初始化,可分为静态初始化和动态初始化

// 动态初始化:数组先声明,再分配空间,最后赋值 
        names = new String[]{"张三","李四","王麻子"};

        scores = new int[4];
        scores[0] = 0;
        scores[1] = 1;
        scores[2] = 2;
        scores[3] = 3;

        前面三个步骤也可以合并一起

// 静态初始化:数组声明的同时,进行初始化
        double[] marks1 = {2.1,3.8,9.5};
        double[] marks2 = new double[]{2.1,3.8,9.5};

5、二维数组的创建

        以水果摊为例,直接上例子

        // 二维数组示例,水果摊
        // 第一维数组,记录水果摊里每个隔间保存的类别
        String[][] fruitNames = new String[3][3];
        // 第二维数组,记录水果摊每个隔间保存的内容
        int[][] fruitNums = new int[3][3];

        // 保存西瓜
        fruitNames[2][2] = "西瓜";
        fruitNums[0][0] = 3;

6、数组数据的处理

        当我们要对数组的数据进行处理的时候,是根据下标进行的

        细心的小伙伴在声明数组的时候已经发现了,数组声明分配空间时和数组访问下标最大值时,会有些出入:在声明时,我们输入的数值是数组的大小,而数组下标的起始值是从0开始,因此,在访问数组最后一个元素的时候,下标总会比大小小一,这点尤为注意,当下标超出指定范围时,会出现如下报错:ArrayIndexOutOfBoundsException(数组越界)

 7、数组的遍历

        如果需要对数组的每个元素进行操作,一个一个处理过于繁琐,因此需要与循环结构一起使用对数组进行遍历

        常用的数组遍历方式有以下两种

// 普通循环
        for (int i = 0; i < marks.length; i++) {
            System.out.print(marks[i] + " ");
        }
        System.out.println();

// for each 循环
        for (double i : marks) {
            System.out.print(i + " ");
        }
        System.out.println();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值