gpt4 book ai didi

java - Java 中 array.length() 的内部代码是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:26 25 4
gpt4 key购买 nike

数组的第10个位置存储了什么说

int[] array=new int[10];

假设我们将值从 array[0] 存储到 array[9],如果我不使用

array.length()

for (int a: array)

我该如何继续?

我的基本问题是 JVM 将如何确定数组的结尾,是在解析数组时遇到 null 还是遇到垃圾值时? array.length() 函数的内置代码是什么?

最佳答案

What is stored in 10th location of array say ... my basic question is how will JVM determine end of array, is it when a null is encountered parsing array or when a garbage value is encountered? what is inbuilt code of array.length() function?

欢迎 C/C++ 程序员:-)

Java 使用与 C/C++ 不同的数组范例。 C/C++ 使用像 NULL 这样的终止符/哨兵 a.k.a.“垃圾”)值来指示数组的结尾。在 Java 中,数组更像是具有特殊“实例变量”的对象——类似于变量 length,它指示数组中有多少个槽。这个特殊的“实例变量”是在创建数组时设置的,并且是只读的。它可以通过说 array.length 访问。

Java 希望代码通过确保它们没有指定大于length - 1 的索引来知道何时在数组末尾停止。但是,为了以防万一,JVM 会出于安全原因检查对数组的每次访问。如果 JVM 找到小于 0 或大于 length - 1 的数组索引,则 JVM 会抛出 IndexOutOfBoundsException

What is stored in 10th location of array

因为我们总是可以检查长度,所以在 Java 中不需要在数组末尾的标记。数组中的最后一项之后没有任何特殊内容(它可能是其他变量的内存)。

if I were to print elements without using array.length()

for(int a: array) {
// code of loop body here
}

这段代码被编译器神奇地转换为:

for (int i = 0; i < array.length; i++) {
int a = array[i];
// code of loop body here
}

但是,用户代码无法访问 i 索引变量。此代码仍然隐式使用 array.length。

关于java - Java 中 array.length() 的内部代码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com