JAVA数组

1. 概述

  • 定义:用于存储相同数据类型的数据容器

  • 特点:有一定大小、元素的数据类型相同

  • 语法结构:

    元素的数据类型[] 数组名称 = new 元素的数据类型[数组容器的大小];

  • 语法解释:

    • 元素:数组中的数据、数组中的变量

    • 元素的数据类型:数组中的数据的数据类型

    • []:表示是一个一维数组

    • 数组名称:数组本身也是一个变量,用于存储数组的地址的变量

    • =:赋值符号,将数组的地址,赋值给数组的名称

    • new:用于在堆内存中开辟空间

    • 元素的数据类型:和前面的元素的数据类型保持一致

    • 数组容器的大小:可以存储数据的个数

  • 打印数组的结果:[D@5cad8086

    • [:表示这是一个一维数组

    • D:表示数组中存储的是 double 类型的数据

    • @:普通的分隔符,没有具体的含义

    • 5cad8086:数组有一个内存地址,通过 hashCode 方法,将这个内存地址计算成了一个数字,用于表示这个内存地址,将这个数字转成十六进制的表示形式

2. 数组的初始化

  • 为数组分配空间,并且赋值。

  • 分类:

    • 静态初始化:在程序书写的时候,就知道了数组中的元素是什么值

    • 动态初始化:程序运行过程中,才能知道究竟给元素赋什么值

2.1 静态初始化

  • 语法结构:

    元素的数据类型[] 数组名称 = new 元素的数据类型[] {元素值的罗列};
    
    或
      
    元素的数据类型[] 数组名称 = {元素值的罗列};

    语法示例:

  • double[] douArr = new double[] {9.9d,8.7,7,0};
    
    或
    
    double[] douArr = {9.9d,8.7,7,0};

  • 注意事项:

    • 在第二个方括号中,不要写数组元素的个数。

    • 元素值的罗列,元素和元素之间,使用逗号分隔。写了几个元素,就分配多大空间。

    • 罗列出来的元素值,数据类型必须和声明的数组元素的数据类型一致。

    • 数组名称的声明,数组名称的赋值,不能分成两行写。

  • 语法结构:

  • 2.2 动态初始化

  • // 声明一个数组并初始化为3个长度
    double[] douArr = new double[3];
    
    // 给元素赋值,方式:数组名称[元素的索引] = 元素值;
    douArr[0] = 3.5;
    douArr[1] = 4d;
    douArr[2] = 7;

  • 元素索引:下角标;从0开始,数组长度 -1结束。

  • 注意事项:

    • 所有的元素,都需要逐个赋值。

    • 如果数组中的元素,没有赋值,元素也有一个默认的初始化值,为各数据类型的默认值。

      3. 数组的内存理解

    • JVM 是执行 Java 的容器,空间很大,按照不同的功能、不同的特点划分了三个区域:堆内存(heap)栈内存(stack)方法区(method)

    • 堆内存【常用】:用于存储数组、对象等数据量较大的数据。一般都是引用数据类型。

    • 栈内存【常用】:用于执行方法,每个方法单独的分配一段空间,称为栈帧,把给方法分配内存空间,形象的称为“进栈”。特点:先进后出

    • 4. 数组异常

      4.1 数组下角标越界异常

    • 异常代码:方法区【常用】:用于存储类的字节码对象,存储常量、存储静态变量。

      public static void main(String[] args) {
          int[] intArr = new int[2];
          System.out.println(intArr[2]);
      }

    • 异常显示:

      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

      异常原因:访问了数组中不存在的索引,超过元素索引范围,都会出现异常情况。

    • 4.2 空指针异常

    • 异常代码:

      public static void main(String[] args) {
          int[] intArr = {3, 5, 9};
          intArr = null;
          System.out.println(intArr[0]);
      }

      异常原因:当引用不再指向任何的堆内存中的数据时,仍然要通过这个引用访问堆内存中的数据,只能抛出异常。

    • 避免方式:

      public static void main(String[] args) {
          int[] intArr = {3, 5, 9};
          intArr = null;
          if (intArr != null) {
              System.out.println(intArr[0]);
          }
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值