您需要区分指针的几种用途:
String s="Hello";
时,您实际上获得了对字符串对象的指针。因此,总体来说,Java没有指针(在C / C ++意义上),因为它不需要它们进行通用OOP编程。此外,向Java添加指针将破坏安全性和强度,并使语言更加复杂。
如果你问为什么不能直接访问内存地址,那是为了保证内存访问的安全性。无论编程人员多么不称职,都不会再出现segmentation faults和缓冲区溢出问题(而且对于程序员来说,管理内存也非常方便,无论他们有多么能干)。
如果你问为什么不能传递引用或函数指针,那么可以使用其他结构来实现相同的效果。
你只需要看一下人们在stackoverflow上关于C指针导致SIGSEGV或Objective-C指针导致EXC_BAD_ACCESS的问题所占比例,就能明白。
Java 有指针,只是不称之为指针(除了可疑命名的NullPointerException
)。它提供几乎相同的功能,但以更安全的方式实现,例如防止您将其设置为任意值。
这不是一个简单的问题,也没有简单的答案,但以下是要点。
Java不直接给程序员访问内存的权限,因此没有指针、malloc、free、realloc等。这是出于安全考虑,它保护程序员免受篡改(至少在Java看来)他们不应该接触的东西的影响。