java真的有指针吗?

我已经看过谷歌的答案,但我不满意。

我的逻辑:

Java使用内存位置,它只是在幕后,你无法看到或访问它(据我所知,可能有访问它们的方式,我不知道)。

我的困惑/问题:

在像Java这样的编程语言中没有指针的目的是什么?专门为在任何系统上使用互联网而设计,而不是像c ++这样的使用指针的编程语言?

编辑


你们中许多人都在说“保持简单”。 如果是这种情况,那么为什么像c++这样的流行编程语言仍然使用指针?


简单的答案是它是一个设计决定。 稍微长一点的答案是C ++中的指针只是用于内存操作,这不是一个适用于Java的概念(见下文)。

Java设想了一个相当系统的,面向对象的编程模型,并且所有基于类的类型基本上都是通过一个指针来处理的,所以这个事实根本不会暴露给用户。

在高质量,系统化和惯用的编程中,C ++中的原始指针也不是非常必要的。 什么原始指针允许你做(即指针算术)通常被认为是“不安全的”,所以它完全被遗漏在Java之外。

请注意,人们试图用C和C ++中的指针做很多事情实际上是未定义的行为。 正确使用指针会给你一组相当有限的选项,其中大部分可以在惯用的C ++中更好地完成。

关于指针唯一真正的用处是直接内存操作。 由于Java不希望你这样做(实际上它的垃圾收集内存管理会主动干扰并被手动内存操作破坏),因此不需要显式指针。

更新之后:最后一段(在我看来)是最引人注目的解释:在C ++中,您需要能够编写自己的内存管理代码(参见“分配器”)。 内存必须通过指针来处理。 所以我严格的回答是,当你实现内存管理时,你需要C ++中的指针,否则就不会。


内部对象的引用被实现为一个指针。 虽然没有指针运算...

C ++有指针,因为它构建为C的超集,它有指针。 C有指针,因为它是在60年代设计的。 那时计算机的内存很少,指针允许实现字符串,数组和参数传递。

这是来自白皮书Java语言环境的摘录:

2.2.9没有更多的指针

大多数研究都认为指针是使程序员能够将错误注入代码的主要功能之一。 鉴于结构消失了,数组和字符串都是对象,指向这些结构的指针就消失了。 因此,Java没有指针数据类型。 任何需要C语言中的数组,结构和指针的任务都可以通过声明对象和对象数组来更容易和可靠地执行。 您可以不用数组指针上的复杂指针操作,而是通过它们的算术指数来访问数组。 Java运行时系统检查所有数组索引以确保索引位于数组的范围内。

由于指针不正确,您不再有悬挂指针和内存垃圾,因为Java中没有指针。


Java 确实有指针。 事实上,Java中的所有东西都是指针(称为引用)。

异常:int,boolean,char等

因为一切都是指针,所以不需要星号来改变。

链接地址: http://www.djcxy.com/p/31655.html

上一篇: Does java really have pointers or not?

下一篇: C pointer to array/array of pointers disambiguation