Java中有没有类似于C++指针的东西?如果有,我想知道它是什么。你能给我一些例子吗?
问问题
234 次
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 回答