数组的内存地址 - Java
有人知道获取数组索引的内存地址吗? (如c中所示)
Does anybody know to get the memory addresses of an array indexes?
(like in c)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有人知道获取数组索引的内存地址吗? (如c中所示)
Does anybody know to get the memory addresses of an array indexes?
(like in c)
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
Java 中没有程序员可实现的“地址”概念。在 C 或 C++ 等语言中,对象的身份等同于它们的地址 - 如果两个对象位于同一内存位置,则它们是同一个对象。在 Java 中,身份的概念与对象的地址是解耦的。这允许进行一些 C++ 中无法实现的优化。例如,理论上,垃圾收集器可以在内存中移动对象以避免碎片,只要它修改引用以使它们指向正确的位置。由于程序员无法直接访问内存地址,因此这种操作是允许的。在 C++ 中,它不起作用,因为编译器无法判断内存中的特定位模式是否是某种编码的指针。
There is no programmer-realizable notion of an "address" in Java. In a language like C or C++, objects' identities are equated with their address - two objects are the same object if they live in the same memory location. In Java, this notion of identity is decoupled from the object's address. This allows some optimizations that are not possible in C++. For example, the garbage collector could, in theory, move objects around in memory to avoid fragmentation, so long as it modifies references so they point to the right location. Because memory addresses can't be accessed directly by the programmer, this operation is permissible. In C++, it wouldn't work, because the compiler couldn't tell if a particular bit pattern in memory was some sort of encoded pointer.
你不能。 Java 没有直接的内存访问。
You can't. Java doesn't have direct memory access.