欢迎光临
我们一直在努力

数组的学习

数组

数组是一种容器,可以用来存储同种数据类型(隐式转换)的多个值。

建议:容器的类型,和存储的数据类型保持一致。

数组的定义与静态初始化

数组的定义

  • 格式一:数据类型[] 数组名(习惯用)
    • 范例:int[] array
  • 格式二:数据类型 数组名[]
    • 范例:int array[]
  • 数组的初始化

    数组的静态初始化:初始化就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。

    • 完整格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
    • 简写为:数据类型[] 数组名 = {元素1,元素2,元素3…};

    数组的地址值表示数组在内存中的位置,例如 [D@加地址值。
    其中:

    • [ 代表这是一个数组
    • D 代表数据类型(这里是 double 类型)
    • @ 为格式规定
    • 后面的地址值为 16 进制

    数组元素访问

    索引:也叫下标、角标。

    索引的特点:从 0 开始,逐个 +1 增长,连续不间断。

  • 获取数组里面的元素
    • 格式:数组名[索引]
  • 把数据存储到数组当中
    • 格式:数组名[索引] = 具体数据/变量;
    • 细节:一旦覆盖过后,原来的数据就不存在了。
  • 数组的遍历

    数组遍历:将数组中的所有内容取出来,取出来之后可以(打印、求和、判断等)。

    注意:遍历指的是取出数据的过程,不要局限地理解为遍历就是打印!

    • 最大索引就是数组的长度 – 1
    • 在 Java 当中,关于数组有一个长度属性 length
      • 调用方法:数组名.length
    • 扩展:自动快速生成数组的遍历方法,IDEA 提供
      • 格式:数组名.fori,然后回车,便会自动生成循环语句

    数组动态初始化

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

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

    各类型默认初始化值:

    数据类型默认初始化值
    整数类型 0
    小数类型 0.0
    字符类型 '\\u0000'(也就是空格)
    布尔类型 false
    引用数据类型 null

    数组内存图

    • 栈:方法运行时使用的内存,比如说 main 方法运行,进入方法栈中执行
    • 堆:存储对象或者数组,new 来创建的,都存储在堆内存
    • 方法区:存储可以运行的 class 文件
    • 本地方法栈:JVM 在使用操作系统功能的时候使用,和我们开发无关
    • 寄存器:给 CPU 使用,和我们开发无关
    • JDK 8 把方法区变成了元空间

    总结

  • 只要是 new 出来的一定是在堆里面开辟了一个小空间
  • 如果 new 了多次,那么在堆里面就有多个小空间,每个小空间中都有各自的数据
    • 数组对象本身存在堆内存;
    • 栈里面的数组变量,只保存数组在堆中的首地址(引用值)
  • 当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果了
  • 数组常见问题

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

    赞(0)
    未经允许不得转载:171主机测评 » 数组的学习
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址