📚 分类
集合
🕵🏽‍♀️ 问题描述
为什么数组索引从0开始?
👨‍🏫 问题讲解
❒ 数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。
✔ 寻址公式: a[i] = baseAddress + i * dataTypeSize
✔ baseAddress: 数组的首地址
✔ dataTypeSize: 代表数组中元素类型的大小,int型的数据,dataTypeSize=4个字节

❒ 从1开始
✔ 寻址公式: a[i] = baseAddress + (i - 1) * dataTypeSize
✔ 对于cpu来说,增加了一个减法指令
✔ 在根据数组索引获取元素的时候,会用索引和寻址公式来计算内存所对应的元素数据,寻址公式是:数组的首地址+索引乘以存储数据的类型大小
✔ 如果数组的索引从1开始,寻址公式中,就需要增加一次减法操作,对于CPU来说就多了一次指令,性能不高。

❒ 当数组里面存储的对象为String类型时,dataTypeSize长度是多少呢?
✔ List里面只能存放对象,而真正保存的是对象引用
✔ JVM 64位引用长度为8,JDK1.8默认开启指针压缩,所以长度为4

🏳️‍🌈 问题总结
1.数组下标为什么从0开始
✔ 寻址公式是:baseAddress + i * dataTypeSize,计算下标的内存地址效率较高
📖 问题信息
📈 浏览次数:34 | 📅 更新时间:2026-01-13 08:49:50
📦 创建信息
🏷️ ID:79 | 📅 创建时间:2024-11-17 17:07:05