【问题标题】:Does java support pointers? [duplicate]java支持指针吗? [复制]
【发布时间】:2014-07-23 19:40:47
【问题描述】:

java 支持指针吗?我已经阅读了一些关于这个主题的主题,但还没有完全理解。

如果不是,那为什么会有Null Pointer Exception

【问题讨论】:

  • Java 在函数调用中使用按值调用。由于对象存储在堆上而不是堆栈上,因此非原始值始终存储为指向堆上对象的指针。如果没有,则为空指针。
  • 谢谢@Tichodroma。已编辑。我实际上指的是 Java,我只是在最后几分钟回答了许多 JS 问题
  • 您问题后半部分的答案很简单,Java 团队弄错了,为该类选择了一个不合适的名称。有可能在某个时候,他们打算在语言中包含指针。但我想我们永远不会知道。
  • @Tichodrama, "JavaScript" =~ /Java/
  • 虽然 Java 不支持指针,但您可以通过地址访问内存。在某些 JVM 上使用 Unsafe,尽管 SecurityManager 不鼓励或不允许这样做。

标签: java


【解决方案1】:

不,只有参考。它不像 c/c++ 那样我们必须通过析构函数来管理内存。在 java 中,自动 GC 用于内存管理(与主线程分开)。 有一些矛盾就像如果java不支持指针那么为什么它会抛出Null“Pointer”异常?

因为这个东西是在JVM级别的。从开发人员的角度来看,java 是通过引用而不是指针来管理的,但在内部(JVM)到处都有指针。

【讨论】:

  • 在内部,null 引用实际上是 0。至少它在 OpenHFT/Hotspot 上,尽管它没有在 JLS 中定义。您可以通过 sun.misc.Unsafe 查看实际使用的地址。
  • @PeterLawrey 不知道这一点。
  • @kick 删除您的评论有什么具体原因吗?
【解决方案2】:

首先,对于指针,ANSWER 是 BIG NO

回答你的第二个问题:

Java 是面向对象的语言。其中 Object 可以为 null。

【讨论】:

  • 对象的引用可以是null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
相关资源
最近更新 更多