集合
为什么数组索引从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,计算下标的内存地址效率较高