Java有指针吗?如果是的话,如何操纵它们?

时间:2013-11-17 18:48:38

标签: java pointers

我是java新手并且很困惑。

Java有指针吗?如果是的话,如何操纵它们?如何执行ptr ++等操作?

4 个答案:

答案 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,你就会明白为什么这是该语言的核心设计。