Java中数组下标为什么从0开始而不是1?
数组特性
数组的一大特性:随机访问,这个在实际开发中大家也经常使用到。
数组地址
如何理解随机访问?假设有个数组int a[10],它的起始地址值为0x1000(address),那么当你访问第n个数据时(即a[n]),实际上是通过其地址值获取对应位置的数据访问,如下图:
其寻址公式为:result = address + 4 * n(4代表数据类型大小,int占4个字节);
假设下标是从1开始,其寻址公式就变成: result = address + (n – 1)*4;
一个是n一个是n-1,看上去没什么两样。注意不要忽视细节,n-1是一次运算,这也就是说,从0开始时,通过下标访问数组CPU就能减少一次运算,从而提高运行效率。兴许你会觉得这也算理由,一次小小的运算谈得上性能吗?但要是许多细节堆积在一起呢?细节往往决定成败。
另一理由
在网上看到过另外一个原因:历史原因。java有些地方是效仿了c语音,而c设计者用0作为数组起始下标,为了c开发者能够减少java的学习成本,故而java中的数组也是把0作为数组的起始下标。
原文作者:榴莲&&山竹
原文地址: https://blog.csdn.net/sinat_34430383/article/details/101774962
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/sinat_34430383/article/details/101774962
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章