数组下标为什么是从0开始?

数组的 4 个基本元素:数组名称、数组元素、元素下标、数据类型

数组(Arrary)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据(方便寻址)。

原因一:历史原因

      语言出现顺序从早到晚C、Java、JavaScript。C语言数组下标是从0开始->Java也是->JavaScript也是。降低额外的学习和理解成本。

原因二:减少CPU指令运算

      ①下标从0开始:

            数组寻址:arr[i] = base_address + i * type_size

            其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。

      ②下标从1开始:

            数组寻址:arr[i] = base_address + (i-1) * type_size

            比较两个计算公式可以发现公式②每次CPU寻址需要多一次 i-1的操作,即多了一次减法的指令运算。

            对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。

原因三:物理内存的地址是从0开始的

       计算机主存是多个连续字节大小的单元组成的数组,每个字节都对应唯一的物理地址,第一个字节的地址为0。

你可能感兴趣的:(Java)