数组基础

jjhdbk / 2024-03-17 / 原文

数组

定义

  • 数组是一种容器,能存储同类型的多个值。

    Tip

    • 存储数据时,需要考虑隐式转换的问题

    • 例如:int( boolean byte short int double )其中double不能转换成boolean。

    • 建议具体数值与数据类型保持一致。


静态初始化

  • 初始化:在内存中为数组容器开辟空间,并将数据存入容器的过程。
  • 完整格式:数据类型[] 数组名 = new 数据类型[ ]{ };
  • 简化格式:数据类型[] 数组名 = { };//常用

地址值

  • 数组在内存中的位置

  • 查询地址值的格式 :System.out.println(数组名);

    • double[] arr = {11,12,13,14,15};

    • System.out.println(arr);

    • 运行结果:[D@776ec8df

    • [ : 表示数组 D : 数据类型 @ : 间隔符 776ec8df : 真正的地址值,是十六进制。


元素访问

  • 利用索引对数组中的元素进行访问

  • 使用时,把数组中的元素赋给变量。

    int[] arr = {1,2,3}
    int number = arr[i];
    
  • 把数据存入数组中

  • 格式:数组名[索引] = 具体数值/变量(会覆盖原来的数字,即原来的数字不存在。)


数组遍历

  • 遍历是取出数据的过程

  • 如何获取所有元素?答:利用循环。

    • 开始条件:0
    • 结束条件:数组长度-1(最大索引-1)
  • int[] arr = {2,15,25,45,22,45,11,78,94,66}
    for(int i = 0;i<arr.length;i++){ // i <= arr.length-1
        System.out.println(arr[i]);
    }
    
  • 拓展

    • 由idea提供快捷方式 arr.fori

动态初始化

定义

  • 手动指定长度,由系统分配初始值。

格式

  • 数据类型[] 数组名 = new 数据类型[数组长度]
  • 例如: int[] arr = new int[3];

默认初始值

  • 整数类型:默认初始值0
  • 小数类型:默认初始值0.0
  • 布尔类型:默认初始值false
  • 字符类型:默认初始值'/u0000' 即空格
  • 引用数据类型:默认初始值null

提示

  • 需要手动给元素添加数值

动态初始化与静态初始化的区别

  • 静态初始化:手动制定数组元素,系统根据数组个数计算出数组长度。
  • 那么在要明确操作的具体数据时,使用静态初始化。
  • 动态初始化:手动指定数组的长度,由系统分配初始值。
  • 那么只明确数组个数,而不知道具体数值时,使用动态初始化。

数组的内存图

黑马程序员 JAVA上 P62 数组的内存图

JAVA内存分配的概念


栈与堆

  • 只要是new出来的一定是在堆里面开辟了一个小空间(这个小空间有地址值)
  • 多次new,那么堆里面有多个小空间,每个小空间中都会有各自的数据。

总结

  • 当两个数组指向同一个小空间时,其中一个数组对空间的值进行改变,那么其他数组再次访问时,数值是修改后的结果。