我读到指针在Java中不可用。但是C ++中的“This”指针被“This”关键字取代。那么有人可以解释一下动态内存分配和java中指针的替换
答案 0 :(得分:7)
java中没有指针。 Java与引用一起使用。
java中没有动态内存分配的概念。因此在java中没有malloc/calloc
的替代方案。 JVM负责创建和释放对象的内存。由于JVM内置了垃圾收集功能,因此也无法替代free
。
答案 1 :(得分:3)
在内部,对象的引用被实现为指针..在java中有一个匿名内部类,可以用它来代替函数指针。
2.2.9没有更多指针
大多数研究都认为指针是其中一个主要特征 使程序员能够将错误注入其代码中。鉴于 结构消失了,数组和字符串是对象,需要 指向这些结构的指针消失了。因此,Java没有指针数据 类型。任何需要数组,结构和指针的任务 通过声明对象和可以更容易和可靠地执行C. 对象数组。而不是在数组上的复杂指针操作 指针,您可以通过算术索引访问数组。 Java 运行时系统检查所有数组索引以确保索引在其中 数组的边界。
查看此Thread
答案 2 :(得分:2)
Java中非托管指针的“替换”是托管引用。
在程序员论坛中查看this答案,了解两者之间的差异。
答案 3 :(得分:2)
Java的引用不是指针。你不能用Java中的引用做指针算法。
您可以阅读Erik Demain here的综合分析:C to Java: Converting Pointers into References
。
答案 4 :(得分:1)
Java确实使用指针。它只是为您处理,如“对象引用”。例如:
String str = new String("efi");
// str is NOT the string object.
// It is a reference to the String object.
不同之处在于,Java会为您执行此操作,并且不会让您自己执行此操作。 C ++ 允许您管理它们。
答案 5 :(得分:1)
Nothing. Java does not have a concept that is equivalent to Pointers.
答案 6 :(得分:1)
Java使用引用来进行初始化,设置或获取变量等。 在C ++中,指针基本上是指该变量的内存。所以这里的每个声明都是java中的引用,它等同于c ++中的指针,但是内部由JVM处理,而不是由程序员处理。 Java内部处理这个问题,我们前面没有像c ++这样的指针。