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,

我试图用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,即
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