栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础:数组

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础:数组

问题引入

当我们要存储一个数据的时候,只需要用"数据类型 变量名"定义一个变量就行了,如果要存放多个同类的数据,是不是要一个个地定义变量?比如:

int a1 = 1;
int a2 = 2;
int a3 = 3;
...

这样定义十分麻烦,于是就有了数组的概念,数组可以存放多个相同类型的数据。

数组的定义及初始化

Java定义和初始化数组的方式和C语言是有区别的,在C语言我们是用数据类型 数组名[数组长度]来定义的,但在Java是不允许直接在定义数组时就定义长度的。

int arr1[];  //正确,编译会通过
int arr1[5]; //错误,不能在定义数组时定义长度

 那么,如何完成定义+初始化的操作呢,Java给出两套方案(含适用场景)

1.静态初始化

数据类型 数组名[] = new 数据类型[] {常量1, 常量2, ···};

其中,new 数据类型[]可省略,对于此类数组,会根据常量的个数确定数组长度

适用场景:已知一连串数据的值

2. 动态初始化

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

例如

int arr[] = new int[5] //定义一个长度为5的整型数组

对于基本数据类型,动态初始化的数组,默认为其所有元素初始化值为0

适用场景:一串数据不知道它的值,但已知这串数据的个数(即要定义数组的长度)

数组元素访问

访问数组元素需要用 数组名[索引]

索引就是数组每个元素的标号,在数组中索引是连续的,最小值0,最大值是 数组长度 - 1

访问数组元素时不可以越界,否则会出现异常

int arr[] = {1, 2, 3, 4, 5};
System.out.println(a[4]); //没问题
System.out.println(a[5]); //不允许,会出现数组越界的异常

应用实例 案例:

需求:已知9个人的Java成绩依次是87, 90, 73, 52, 99, 67, 83, 92, 96。

现在要求打印他们的平均分(保留1位小数)。

public class E {
    
    public static void main(String[] args) {
        //已知9个人的Java成绩可以直接用静态初始化定义一个数组来存放
        int arr[] = {87, 90, 73, 52, 99, 67, 83, 92, 96};
        //定义一个浮点型变量存放平均分,可先用来暂存9个人成绩的总和
        double avg = 0;
        //遍历数组,将每个人的成绩加到avg中先计算总和
        for (int i = 0; i < arr.length; i++) {
            avg += arr[i];
        }
        //此时avg存储的是9个人成绩之和,只需将其除以9即可得到
        //整数相除只会得到整数,在被除数位置 * 1.0即可得到浮点数
        avg = 1.0 * avg / arr.length;
        //最后将平均分打印输出
        System.out.printf("%.1f",avg);
    }
}
案例2:

已知一串数据

72, 89, 65, 58, 87, 91, 53, 82, 71, 93, 76, 68

要求输出最大值、最小值,以及它们的位置

public class E {
    
    public static void main(String[] args) {

        int arr[] = {72, 89, 65, 58, 87, 91, 53, 82, 71, 93, 76, 68};
        //全局分析:两次遍历数组,第一次揪出数组元素最大值和最小值,第二次将已存储的最值与数组元素匹配,匹配时就将对应下标打印
        //定义变量存放最值,默认值是第一个元素
        int min = arr[0];
        int max = arr[0];
        //从第2元素开始遍历数组,将每个元素和已存储的最值进行比较,选出最大值最小值
        for (int i = 1; i < arr.length; i++) {
            //判定条件:有元素比已经存储的最小值小,这个元素的值成为新的最小值
            if (min > arr[i]) {
                min = arr[i];
            } else if (max < arr[i]) {
                max = arr[i];
            }
        }
        System.out.println("最大值:" + max);
        System.out.println("最小值:" + min);
        //再次遍历数组,找出最值下标打印输出
        for (int i = 0; i < arr.length; i++) {
            if (max == arr[i]) {
                System.out.println("最大值的下标:" + i);
            } else if (min == arr[i]) {
                System.out.println("最小值的下标:" + i);
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号