Java 有人能帮我直观地理解array.length-1在数组末尾的位置吗?
我试图用Java解决一个二进制排序问题。我不明白为什么数组的末尾是array.length-1 如果Java 有人能帮我直观地理解array.length-1在数组末尾的位置吗?,java,arrays,Java,Arrays,我试图用Java解决一个二进制排序问题。我不明白为什么数组的末尾是array.length-1 如果 是否结束返回3?由于数组中有5个元素,因此数组长度将为5 元素0是第一个元素(索引0),元素1是第二个元素(索引1),…,元素4是第五个元素(索引4) 所以最后一个元素的索引是5-1=4这个列表的长度是5。最后一个索引是4,因为第一个索引是0(不是1)。数组。长度是5 在Java中,从0开始计算数组,因此array[0]将是0 向上计数,您会发现该数组的最后一个元素(如您所定义)的索引位置为4,
是否结束返回3?由于数组中有5个元素,因此数组长度将为5 元素
0
是第一个元素(索引0),元素1
是第二个元素(索引1),…,元素4
是第五个元素(索引4)
所以最后一个元素的索引是
5-1=4
这个列表的长度是5。最后一个索引是4,因为第一个索引是0(不是1)。数组。长度是5
在Java中,从0开始计算数组,因此array[0]
将是0
向上计数,您会发现该数组的最后一个元素(如您所定义)的索引位置为4,即array.length-1
解释
术语索引(类似于位置)从0开始计数
因此,有5个元素的数组在索引0,1,2,3,4
处有元素。因此,最后一个元素实际上位于索引4
,即length-1
如此可视化,对于像{3,6,1,8,4}
这样的数组
values: 3 6 1 8 4
indices: 0 1 2 3 4
出身背景
我认为索引(至少在Java和许多其他语言中)从0开始计数的最有力的原因之一与如何在引擎盖下实现有关,如:
array[i]
基本上计算为
sizeof(type) * i
以获得实际的内存地址偏移量。如果0
存在,则会导致偏移量0
,因此该数组的内存开始
实际上,有些语言没有走这条路,比如Matlab,其中索引从1开始计数
索引从0开始
尺寸/长度从1开始
数组长度=5
最后一个元素位于长度为-1的索引中(大小/长度索引之间的差异。不,这个数组的长度是5。减1等于4。索引从0开始计数。因此,包含5个元素的数组具有索引0、1、2、3、4。您认为数组的长度返回多少?为什么您明显认为它是4
?如果您需要可视化,区域中有一张图片我想知道为什么这类问题会吸引大量相同的答案。我知道答案很简单,但它是重复的,如果完全相同的答案已经发布了3次,为什么还要麻烦呢?
sizeof(type) * i