在C中我可能会说
printf("%p",0x11194);
*((int *) 0x11194) = 30240;
(在这个例子中我知道该内存位置有一个整数)
请告诉我,我将如何在Java中做同样的事情?顺便说一下,我可能完全误解了记忆的运作方式
答案 0 :(得分:2)
您可以使用sun.misc.Unsafe和ByteBuffer在Java中执行此操作。
但是对于普通的Java使用,你根本不这样做。 Java将为您提供一个对象引用,它是对象的句柄。它没有指向内存中的一个位置(JVM可以在你不知道/关心的情况下移动内存中的对象)并且你不能对它们执行算术(与指针不同)
答案 1 :(得分:1)
你没有误解记忆的运作方式;你只是假设Java会让你触摸它。它不会。内存和指针仍然存在,但必须通过适当的对象创建和去引用来访问,而不是直接指针内存访问。
从好的方面来说,你不必担心释放你不再需要的记忆。