我想知道java中是否有任何指针概念?
我知道没有明确的指针声明,但实现了implcitly指针概念。为什么java中没有指针
答案 0 :(得分:9)
你必须区分指针的几种用法:
String s="Hello";
时,您将获得实际上是指向字符串对象的指针。因此整体Java没有指针(在C / C ++意义上),因为它不需要它们用于通用OOP编程。此外,添加指向Java的指针会破坏安全性和健壮性,并使语言更加复杂。
答案 1 :(得分:3)
如果你问为什么没有直接访问内存位置,那就是为了保证内存访问的安全性。无论程序员多么无能(并且管理的内存对于程序员来说非常方便,无论多么称职),都不会再出现段错误和缓冲区溢出。
如果你问为什么没有传递引用或函数指针,那么有一些解决方法可以与其他构造实现相同的效果。
答案 2 :(得分:2)
您只需要查看人们询问导致SIGSEGV的C指针或导致EXC_BAD_ACCESS的Objective-C指针的问题比例(例如SO): - )
Java 有指针,它只是不会将它们称为指针(除了可疑名称为NullPointerException
之外)。它提供了几乎相同的功能,但是以更安全的方式,例如阻止您将它们设置为任意值。
答案 3 :(得分:1)
问:java中是否有任何指针概念?
答:是的。他们被称为“参考”。
问:但是实现了implcitly指针概念......这里没有明确的指针声明
答:正确。
“安全”是通常给出的一个原因。
但更重要的原因是“抽象程度”。如果Java“隐藏”实现细节(例如,如何在内存中布置数组),则可以自由地“优化”事物(比如为您提供查询数组长度的标准方法 - C / C ++无法直接执行的操作) 。它可以自由地实现“垃圾收集”。对于这些 - 以及更多 - 机会,这门语言和运行时间都可以自由利用。
仅供参考,这是一个相反的观点:
答案 4 :(得分:1)
这不是一个简单的答案的简单问题,但这里是它的要点。
Java没有给程序员直接访问内存,因此没有指针没有malloc没有free realloc等。这是为了安全起见,它保护程序员不被篡改(至少在Java的脑海中)他们不应该“T