Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java是否使用指针按索引访问数组?_Java_Arrays_Pointers_Indexing - Fatal编程技术网

Java是否使用指针按索引访问数组?

Java是否使用指针按索引访问数组?,java,arrays,pointers,indexing,Java,Arrays,Pointers,Indexing,我很好奇。java使用指针,如C++或C++来访问数组吗?使用C语言时,x[a]可以转换为*(x+a)。Java语言呢?它与C和C++相同,或者只是使用顺序搜索来访问元素?如果它是一个对象数组,它本质上是指向这些对象的指针数组,但是对于原始值来说,这不是一个例子。与C++不同,你不能用java做指针运算。< /P> < P> OK,我从这个找到了答案。 在Java中,普通指针算法(引用和取消引用)不再存在。然而,指针是存在的。他们称之为参考文献,但这并不能改变它是什么和数组访问仍然是完全一样的:

我很好奇。java使用指针,如C++或C++来访问数组吗?使用C语言时,x[a]可以转换为*(x+a)。Java语言呢?它与C和C++相同,或者只是使用顺序搜索来访问元素?

如果它是一个对象数组,它本质上是指向这些对象的指针数组,但是对于原始值来说,这不是一个例子。与C++不同,你不能用java做指针运算。< /P> < P> OK,我从这个

找到了答案。 在Java中,普通指针算法(引用和取消引用)不再存在。然而,指针是存在的。他们称之为参考文献,但这并不能改变它是什么和数组访问仍然是完全一样的:查看地址,添加索引并使用该内存位置。但是在Java中,它将检查索引是否在最初分配的数组的范围内。否则,它将抛出一个异常


Java不是C,只能使用
array[index]
语法访问数组。与C不同的是,在运行时,如果
index
超过数组大小,则会出现一个错误。从某种意义上说,数组是通过偏移起始点来访问其条目的连续内存块的包装,您可以将其视为类似于罩下的指针。从技术上讲,我认为这是JVM的一个实现细节,这不是Java语言的要求,但可能所有合理的JVM实现都在内部使用指针访问的等价物。对象不是指针。对象是对象。@khelwood所有对象都是引用。这难道不意味着它本质上就是一个指针吗?对象与引用不同。对象就是引用所指的对象。@khelwood哦,是的,删除了最后一句话,以便更清楚。谢谢