数组
数组是一种容器,可以用来存储同种数据类型(隐式转换)的多个值。
建议:容器的类型,和存储的数据类型保持一致。
数组的定义与静态初始化
数组的定义
- 范例: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 把方法区变成了元空间
总结
- 数组对象本身存在堆内存;
- 栈里面的数组变量,只保存数组在堆中的首地址(引用值)
数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常。

实现100%通过率-171主机测评](https://www.171host.com/wp-content/uploads/2026/10/20261026130223-6adf4f5f34184-220x80.gif)



