我是java新手并且很困惑。
Java有指针吗?如果是的话,如何操纵它们?如何执行ptr ++等操作?
答案 0 :(得分:3)
是的,java有指针,他们称之为引用。 但是java中不可能引用操作。也就是说,你不能做ref ++和类似的东西。 您只需将内存分配给对象并将其分配给引用,解除分配也可以由JVM中的垃圾收集器完成。所以你没有免费。
答案 1 :(得分:3)
Java没有指针,但您可以使用sun.misc.Unsafe
进行指针操作:Java Magic. Part 4: sun.misc.Unsafe:
static Object shallowCopy(Object obj) {
long size = sizeOf(obj);
long start = toAddress(obj);
long address = getUnsafe().allocateMemory(size);
getUnsafe().copyMemory(start, address, size);
return fromAddress(address);
}
虽然在我的实践中我从来不想做这些事情,除非你正在开发像Kryo这样的超快速库,否则它们被社区认为是不好的做法。
答案 2 :(得分:1)
你没有指针,或者至少不是你如何习惯于C / C ++ /无论如何。您有对象引用,但您不能++
那些。
答案 3 :(得分:0)
以下示例是设置为保留内存的指针:
Object o = new Object();
int[] myInts = new int[32];
您可以像这样操作指针:
Object myObject = otherObject;
...如果两种类型匹配。
你不能像在C中那样进行指针操作,因为这些通常是危险的操作。 Java通常会尽可能地通过禁止危险操作来减少编码错误。在开始时这感觉很有限,但是一旦你了解Java并且突然可以编写整页代码而没有一个bug,你就会明白为什么这是该语言的核心设计。