当前位置: 代码网 > it编程>编程语言>Java > Java数组的动态初始化和常见问题解析

Java数组的动态初始化和常见问题解析

2024年10月21日 Java 我要评论
一、为什么有数组动态初始化呢?如果一开始就知道数组里的数据,就可以使用静态初始化去完成。但是如果一开始就不知道要添加什么数据,那此时大括号中写什么呢?int[] arr = {1, 2, 3, 4,

一、为什么有数组动态初始化呢?

如果一开始就知道数组里的数据,就可以使用静态初始化去完成。

但是如果一开始就不知道要添加什么数据,那此时大括号中写什么呢?

int[] arr = {1, 2, 3, 4, 5};
int[] arr = {????}

是不是感觉写什么都不太合适。所以动态初始化和静态初始化的应用场景是不一样的。

二、动态初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

格式:

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

示例:

下述代码表示arr数组里只能存3个int类型的整数。

int[] arr = new int[3];

三、代码示例

需求:

定义一个数组,用来存班级中50个学生的姓名。

姓名未知,等学生报道之后,再进行添加。

package com.itheima.arraydemo;

public class arraydemo4 {
    public static void main(string[] args) {
        //格式:
        //数据类型[] 数组名 = new 数据类型[数组的长度];
        //在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值

        string[] arr = new string[50];
        //添加学生
        arr[0] = "zhangsan";
        arr[1] = "lisi";
        //获取
        system.out.println(arr[0]);//zhangsan
        system.out.println(arr[1]);//lisi
        system.out.println(arr[2]);//打印出来的是默认初始化值null
    }
}

四、数组默认初始化值的规律

  • 整数类型:默认初始化值0
  • 小数类型:默认初始化值0.0
  • 字符类型:默认初始化值’\u0000’ 空格
  • 布尔类型:默认初始化值 false
  • 引用数据类型:默认初始化值 null,string就是一个引用数据类型
int[] arr2 = new int[3];
system.out.println(arr2[0]);//0
system.out.println(arr2[1]);//0
system.out.println(arr2[2]);//0

五、数组动态初始化和静态初始化的区别

1、动态初始化:手动指定数组长度,由系统给出默认初始化值。

只明确元素个数,不明确具体数值,推荐使用动态初始化

例如:使用数组容器来存储键盘录入的5个整数。

int[] arr = {????}; // 不明确数组中应该存储哪些
int[] arr = new int[5]; // 就使用动态初始化

2、静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。

需求中已经明确了要操作的具体数据,直接静态初始化即可。

例如:将全班的学生成绩存入数组中:11,22 ,33

int[] arr = {11, 22, 33};

六、数组常见问题:越界

当访问了数组中不存在的索引,就会引发索引越界异常

package com.itheima.arraydemo;

public class arraydemo5 {
    public static void main(string[] args) {
        //1.定义一个数组
        int[] arr = {1,2,3,4,5};
        //长度:5
        //最小索引:0
        //最大索引:4(数组的长度 - 1)
        //如果访问的数字不在这个范围(0 ~ 4)就会报索引越界异常
        system.out.println(arr[2]);


        //小结:
        //索引越界异常
        //原因:访问了不存在的索引
        //避免:只要知道索引的范围就行了
        //最小索引:0
        //最大索引:(数组的长度 - 1)
    }
}

下图的红色就表示代码出现了问题,通常我们也会说代码报错了。

阅读报错的信息:exception:异常,异常在main里。java.lang.arrayindexoutofboundsexception 是异常的名字,叫做:索引越界异常。后面就会紧接着异常出现的解释:

index 10 out of bounds for length 5

索引10已经超过了长度为5的数组。

at:表示 com.itheima.arraydemo 是包名,arraydemo5 是类名。

main 是方法名。arraydemo5.java:10 表示异常出现的位置,这里就表示在第10行出现了问题。

点一下,它就会自动跳转到第10行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com