昨天我参加了一家知名欧洲公司的CTO的演讲,直到最近他才知道java有指针.在面对他时,他说他绝对肯定java中存在指针/不安全代码.
Sea*_*oyd 20
有一个叫做的课sun.misc.Unsafe,很多都是真的.但是它没有在Java代码中使用指针(因为Java没有指针,虽然我同意java引用在概念上类似),但大多数是使用本机代码实现的.
正如我在评论中提到的,这不是公共API的一部分,不应该被客户端代码使用.但是,您可以在工作中看到它时,你看的来源Atomic*在课堂上的java.util.concurrent.atomic包.
Mik*_*maa 15
Java中没有指针,只有安全引用.不幸的是,你的知名CTO是错误的.
通过JNI集成了不安全的代码.
http://en.wikipedia.org/wiki/Java_Native_Interface
Mik*_*aun 10
Java有指针.
Java是否有指针的混淆与Java是通过引用调用还是按值调用的讨论密切相关.
不知情的人认为Java没有指针,并且因为一个方法可以改变一个传入的对象,这个改变的效果可以传递给调用者,他们认为它必须通过引用调用.
但这不正确.
会发生什么是Java 指针按值传递.Java中的对象没有其他类型的变量而不是指针变量,并且没有引用调用.
"不安全"的故事是另一回事.这通常不同于Java是否有指针的问题.Java的指针是安全的; 它们指向对象并使用正常的语言结构,它们不能被操纵以指向任意的内存位置.
然而,有JNI,但是本机代码可能不安全,而不是Java代码.
还有Real-time Java(jsr-1),您绝对可以访问系统中的特定内存位置.然而,这是一个非常特殊且相当罕见的Java版本,主要用于嵌入式目的.如果这意味着我想它会被明确提及.
Java没有指针,只有对象的引用.引用类似于指针,因为它指向一个变量,一个对象,但是您无法查看或编辑此引用的地址内存,您可以在C中执行此操作.
另一件事.在C中,您可以使用引用/解除引用操作来管理指针,将*指针的名称放在第一位.在Java中,此操作(引用/解除引用)完全不存在,因为它是完全自动的,对用户隐藏.