【问题标题】:Is Java using pointer to access Array by index? [duplicate]Java是否使用指针按索引访问数组? [复制]
【发布时间】:2020-02-20 14:29:38
【问题描述】:

我很好奇。 java 是使用像 C 或 C++ 这样的指针来按索引访问数组吗?使用 C 语言时,x[a] 可以转换为 *(x + a)。 Java语言呢?与 c 和 c++ 相同还是仅使用顺序搜索来访问元素?

【问题讨论】:

  • Java 不是 C,只能使用 array[index] 语法访问数组。同样与 C 不同的是,您在运行时会收到错误 index 超出数组大小。
  • 从某种意义上说,数组是围绕连续内存块的包装器,您可以通过偏移起点来访问其条目,您可以将它们视为引擎盖下的指针。
  • 从技术上讲,我认为这是 JVM 的一个实现细节,它不是 Java 语言的要求,但可能所有合理的 JVM 实现在内部都使用等效的指针访问。

标签: java arrays pointers indexing


【解决方案1】:

如果它是一个对象数组,它本质上是一个引用这些对象的指针数组,但是对于原始值来说不是这样。与 c++ 不同,您不能在 Java 中进行指针运算。

【讨论】:

  • 对象不是指针。对象就是对象。
  • 对象与引用不同。对象是引用所指的事物。
【解决方案2】:

好的,我从这个https://softwareengineering.stackexchange.com/a/105919找到了答案

在 Java 中,不再存在纯指针算术(引用和解除引用)。但是指针存在。他们称它们为引用,但它并没有改变它的本质。 数组访问还是一模一样:查看地址,添加索引并使用该内存位置。但是在 Java 中,它将检查该索引是否在您最初分配的数组的范围内。如果没有,它会抛出异常。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2016-09-09
    • 1970-01-01
    • 2019-09-02
    • 2017-12-25
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多