2017-06-07 97 views
0

我正在学习数组作为数据结构,我对如何在Java中完全按照索引获得数组中的元素感兴趣。如何通过索引获取数组中的元素?

什么时,执行以下代码是引擎盖下发生:

... 
int i = array[2]; 

如何JVM店参考文献的对原始类型数组?我们如何获得O(1)中的元素? JVM是否计算元素相对于其他元素的位置?

+2

你可以从https://stackoverflow.com/documentation/java/99/array#t = 201706071240291279792 – Blasanka

+1

array [2]只是指向内存中的特定位置。如果我们知道值的位置,那么就没有必要的搜索,因此O(1)被实现了,当然内存是如何处理的,是一个不同的故事,但是它与java有关并且与其相关。 – nafas

+0

对于对象,有一个顺序数组指向存储在内存中的实际元素的指针。当你引用'array'时,Java会查看该数组。当你说'array [2]'时,Java从数组中读取适用的指针以找到相应的元素。对于基元,存储在内存中的实际项目有一个连续的数组。我会发布一个答案,但我现在不想画一张照片来解释它。 – Dukeling

回答

0

像int [],double []等数组是本地数组。 对本地数组的引用是对其第一个元素的引用。 具有索引“i”的元素将通过解引用(“第一个元素的引用”+ i * sizeOf(“contains type”))获得。

P.s.在Java中,它们被包装在其他类中以检查边界,获得长度等。在像C++这样的低级编程语言中,你可能会破坏你的程序,当你试图通过索引更改元素而不是数组长度时

相关问题