Java中array.length()的内部代码是什么?
什么存储在数组的第10个位置
说 int[] array=new int[10]; 假设我们有值存储从array [0]到array [9],如果我不使用打印元素 array.length() 或者为(int a:array) 我该怎么办? 我的基本问题是JVM如何确定数组的结尾,是否在遇到解析数组的null或遇到垃圾值时?什么是array.length()函数的内置代码? 解决方法
欢迎C/C++程序员:-) 对于数组,Java使用与C/C++不同的范例. C/C++使用终结符/ sentinel a.k.a.“garbage”)值来表示数组的结尾.在Java中,数组更像是具有特殊“实例变量”的可变长度的对象,该变量长度表示数组中有多少个插槽.这个特殊的“实例变量”在数组的创建时设置,是只读的.可以通过说array.length来访问它. Java希望代码知道何时停止在数组末尾,确保它们没有指定大于length的索引 – 但是,出于安全原因,JVM会检查对数组的每次访问,以防万一.如果JVM发现数组索引小于0或大于length – 1,则JVM会抛出IndexOutOfBoundsException.
由于我们总是可以检查长度,因此Java中数组末尾不需要标记.在数组中的最后一项之后没有任何特殊内容(它可能是其他变量的内存).
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |