-9

Java中有没有类似于C++指针的东西?如果有,我想知道它是什么。你能给我一些例子吗?

4

2 回答 2

7

Java 的指针(语言规范如此称呼,而我相信 Java 程序员大多将它们称为“引用”)不支持指针算法

而且Java没有办法做指针运算。

如果你想在 Java 中做这些低级的事情,一种方法是使用 JNI(Java 本地接口)来访问用 C 或 C++ 编写的代码。

于 2012-08-17T11:40:44.030 回答
3

Java 对象模型与 C++ 不同:

  • 在 C++ 中,对于每种类型,您都可以拥有该类型的变量。此外,对于每个非引用类型T,都有一个类型T&,您可以拥有该类型的变量(但引用永远不是对象)。

  • 在 Java 中,作为类类型的类型永远不能是变量的类型。类类型的对象只能动态存在,并且声明为类型的变量T(其中T是类类型)总是隐含地对对象的跟踪引用。(让我们忽略这个讨论的原始类型。)

在这两种语言中,变量都是有作用域的。但是,在 C++ 中,您可以利用作用域生命周期,因为生命周期结束的对象会自动调用析构函数。在 Java 中,唯一的变量是引用,并且它们超出范围会做一些非常不同的事情:它通知内存管理器他们正在跟踪的对象现在少了一个引用;如果没有剩余的基础引用,则该对象有资格进行(非确定性)收集。

如果愿意,您可以将 Java 中的类类型变量等同于 C++ 中的指针:

// Java:
{
    Foo x = new Foo();
    x = new Foo();      // no assignment in Java!
}

// C++:
{
    Foo * px = new Foo;
    px = new Foo;       // ... leaks the previous object
}
于 2012-08-17T11:55:47.317 回答