就像Java中的指针C++一样
Same thing like C++ pointer in Java
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
}
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 为什么在C++中对链表这样做?(像堆叠一样处理它们)
- 堆栈和队列是否像C++中的数组一样传递?
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样
- 我们可以将集合的值存储在变量中吗?就像我们可以将数组的值存储在变量中一样
- 我如何在C++像在 Python 中一样实现 f 字符串?
- 自制的上衣:看起来一样,但不完全相同
- 如何使用 redis-plus-plus 存储二进制数据,就像我想存储结构一样?@for_stack?
- 如何像在 C++ 中处理数组一样对 .txt 文件中的字符进行寻址?
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 像 CPP 中的控制台一样的应用程序
- 为什么C++中没有常量引用,就像常量指针一样?
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 有没有像给定的一样的 std::optional_function
- Java 是否像C++模板一样具有泛型推论?
- 记忆栅栏和记忆屏障是一样的吗
- 对象作为参数传递,就好像我们正在传递构造函数值一样
- 像自定义类一样构造的指针(内置类型)如何工作?
- JavaScript箭头函数:我们能否像C ++ lambdas一样捕获值