29-Java动态初始化数组、元素默认值规则

一、动态初始化数组

  • 定义数组的时候 只确定元素的类型和数组的长度,之后再存入具体数据

二、动态初始化数组的基本原理

在这里插入图片描述

  • 当你赋值后,数组的默认值0,就会变成你赋的值

三、数组的动态初始化格式

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

// 例子
// 1.定义一个动态初始化数组,长度:3
int[] arr = new int[3];

// 2.后存入具体数据:10,20,30 ——> 赋值
arr[0] = 10;	// 存入第一位
arr[1] = 20;	// 存入第二位
arr[2] = 30;	// 存入第三位

// 3.输出一、二、三位数据 ——> 取值
System.out.println(arr[0]);	// 10
System.out.println(arr[1]);	// 20
System.out.println(arr[2]);	// 30

四、练一练

package com.app.create;

public class ArrayDemo5 {
    public static void main(String[] args) {
        // 目标:学会动态初始化数组的定义和使用

        // 需求1:班级即将要期末考试了,需要你写一个程序来录入班级学生的考试成绩,班级人数3个
        /*
            分析需求:
                1.定义一个double类型的动态初始化数组,长度为3,用于存放学生考试成绩
            实现:
                1.定义一个double类型的动态初始化数组,长度为3,用于存放学生考试成绩
                2.用于测试:期末考试结束了,开始录入学生成绩
                3.用于测试:老师要查看所有学生的成绩,发现第3个学生缺考了
         */
        System.out.println("--------------学生成绩录入----------------");
        // 1.定义一个double类型的动态初始化数组,长度为3,用于存放学生考试成绩
        double[] scores = new double[3];    // 默认值:[0.0, 0.0, 0.0]
        // 索引:                                        0    1    2

        // 2.用于测试:期末考试结束了,开始录入学生成绩 ——> 赋值
        scores[0] = 90.0;   // 第一个学生的考试成绩:90分
        scores[1] = 78.5;   // 第二个学生:78.5分
//        scores[2] = 89.0;   // 第三个学生:89分

        // 3.用于测试:老师要查看所有学生的成绩, ——> 取值
        System.out.println("第1个学生的成绩:" + scores[0]);
        System.out.println("第2个学生的成绩:" + scores[1]);
        // 发现第3个学生缺考了
        System.out.println("第3个学生的成绩:" + scores[2]);



        System.out.println("\n--------------学生姓名录入----------------");
        // 需求2:开学啦!新生陆续报名入读我们学校,现在需要写一个能录入1000个学生姓名的程序
        /*
            分析需求:
                1.定义一个String类型的动态初始化数组,长度为1000,用于存放学生姓名
            实现:
                1.定义一个String类型的动态初始化数组,长度为1000,用于存放学生姓名
                2.用于测试:有3个新生报名了,录入新生的姓名
                3.用于测试:校长要检查是谁报名入读了
         */
        // 1.定义一个String类型的动态初始化数组,长度为1000,用于存放学生姓名
        String[] names = new String[1000];  // 默认值:[0, 0, 0, 0, ...]
        // 索引:                                       0  1  2  3  ...

        // 2.用于测试:有3个新生报名了,录入新生的姓名
        names[0] = "张杰";
        names[2] = "林俊杰";
        names[4] = "杨洋";

        // 3.用于测试:校长要检查是谁报名入读了
        System.out.println("第1个学生的姓名:" + names[0]);
        System.out.println("第2个学生的姓名:" + names[1]);
        System.out.println("第3个学生的姓名:" + names[2]);
        System.out.println("第4个学生的姓名:" + names[3]);
        System.out.println("第5个学生的姓名:" + names[4]);
        System.out.println("第6个学生的姓名:" + names[5]);
        System.out.println("第7个学生的姓名:" + names[6]);
        System.out.println("........");
    }
}
输出结果:
--------------学生成绩录入----------------
第1个学生的成绩:90.0
第2个学生的成绩:78.5
第3个学生的成绩:0.0

--------------学生姓名录入----------------
第1个学生的姓名:张杰
第2个学生的姓名:null
第3个学生的姓名:林俊杰
第4个学生的姓名:null
第5个学生的姓名:杨洋
第6个学生的姓名:null
第7个学生的姓名:null
........

1、结论
  • 动态初始化数组的特点:先定义,后赋值,不赋值的位置会产生默认值:比如double类型(默认值:0.0)、String类型(默认值:null)
2、动态初始化数组总结

(1)数组的动态初始化的写法是怎么样子的?

  • 格式:
    数据类型[] 数组名 = new 数据类型[长度];
    
    例:
    int[] arr = new int[10];
    

(2)两种数组定义时的特点和业务场景有什么区别?

  • 当已经知道要存入的元素值,用静态初始化数组
  • 当存入的元素值是未知的,用动态初始化数组

五、动态初始化数组的元素默认值

1、元素默认值规则:
数据类型明细默认值
基本类型byte、short、char、int、long
float、double
boolean
0
0.0
false
引用类型类、接口、数组、Stringnull
2、两种初始化数组的使用场景总结、注意事项说明:
  • 动态初始化:只指定数组的长度,后期赋值,适合开始知道数据的数量,但是不确定具体元素值的业务场景

  • 静态初始化:前期就存入元素值,适合开始就能确定具体元素值的业务场景

  • 两种初始化的格式是独立分开的,严格要求不能混合使用

    int[] arrs = new int[3]{1, 10, 20};		// 错误!!!!
    
3、练一练
package com.app.create;

public class ArrayDemo6 {
    public static void main(String[] args) {
        // 目标:掌握动态初始化元素默认值的规则

        // 1.整数类型数组的元素默认值都是0
        System.out.println("----------整数类型数组的元素默认值----------");
        // int类型
        System.out.println(">>>>>>>>int类型<<<<<<<<<");
        int[] ints = new int[1000];
        System.out.println(ints[0]); // 首位
        System.out.println(ints[999]); // 末位

        // short类型
        System.out.println("\n>>>>>>>>short类型<<<<<<<<<");
        short[] shorts = new short[100];
        System.out.println(shorts[0]);
        System.out.println(shorts[99]);

        // byte类型
        System.out.println("\n>>>>>>>>byte类型<<<<<<<<<");
        byte[] bytes = new byte[10];
        System.out.println(bytes[0]);
        System.out.println(bytes[9]);

        // long类型
        System.out.println("\n>>>>>>>>long类型<<<<<<<<<");
        long[] longs = new long[100000000];
        System.out.println(longs[0]);
        System.out.println(longs[99999999]);

        // char类型
        System.out.println("\n>>>>>>>>char类型<<<<<<<<<");
        char[] chars = new char[100];
        System.out.println((int)chars[0]);
        System.out.println(chars[99]);


        // 2.浮点类型数组的元素默认值都是0.0
        System.out.println("\n----------浮点类型数组的元素默认值----------");
        // float类型
        System.out.println(">>>>>>>>float类型<<<<<<<<<");
        float[] floats = new float[90];
        System.out.println(floats[0]);
        System.out.println(floats[89]);

        // double类型
        System.out.println("\n>>>>>>>>double类型<<<<<<<<<");
        double[] doubles = new double[90];
        System.out.println(doubles[0]);
        System.out.println(doubles[89]);


        // 3.布尔类型数组的元素默认值都是false
        System.out.println("\n----------布尔类型数组的元素默认值----------");
        // boolean类型
        System.out.println(">>>>>>>>boolean类型<<<<<<<<<");
        boolean[] booleans = new boolean[100];
        System.out.println(booleans[0]);
        System.out.println(booleans[99]);


        // 4.引用类型数组的元素默认值都是null
        System.out.println("\n----------引用类型数组的元素默认值----------");
        // String类型
        System.out.println(">>>>>>>>String类型<<<<<<<<<");
        String[] strings = new String[100];
        System.out.println(strings[0]);
        System.out.println(strings[99]);
    }
}
输出结果:

----------整数类型数组的元素默认值----------
>>>>>>>>int类型<<<<<<<<<
0
0

>>>>>>>>short类型<<<<<<<<<
0
0

>>>>>>>>byte类型<<<<<<<<<
0
0

>>>>>>>>long类型<<<<<<<<<
0
0

>>>>>>>>char类型<<<<<<<<<
0
 

----------浮点类型数组的元素默认值----------
>>>>>>>>float类型<<<<<<<<<
0.0
0.0

>>>>>>>>double类型<<<<<<<<<
0.0
0.0

----------布尔类型数组的元素默认值----------
>>>>>>>>boolean类型<<<<<<<<<
false
false

----------引用类型数组的元素默认值----------
>>>>>>>>String类型<<<<<<<<<
null
null

  • 单独说明一下 char 类型

    // char类型
    System.out.println("\n>>>>>>>>char类型<<<<<<<<<");
    char[] chars = new char[100];
    System.out.println((int)chars[0]);
    System.out.println(chars[99]);
    

    输出结果:

    ​ 0
    在这里插入图片描述

    第二个输出结果会是这个字符,是因为没有强转为int类型,所以会输出这个字符,不过这个字符在ASCII码表中对应的数字是:0,所以第二输出结果也是0

动态初始化数组的元素默认值规则总结

1、动态初始化数组后元素的默认值是什么样的?

  • byte、short、int、char、long类型数组元素的默认值都是 0
  • float、double类型数组元素的默认值都是 0.0
  • boolean类型数组元素的默认值都是 false
  • String类型数组元素的默认值都是 null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值