就像Java中的指针C++一样

Same thing like C++ pointer in Java

本文关键字:C++ 一样 指针 Java 就像      更新时间:2023-10-16

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

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

Java没有办法做指针算术。

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

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
}