Gab*_*iel 29 c++ java pointers
我在google上寻找答案,但我并不满意.
我的逻辑:
Java 使用内存位置,它只是在你无法看到或访问它的幕后(据我所知,可能有访问它的方法,我不知道).
我的困惑/疑问:
没有指向Java等编程语言的指针的目的是什么,专门用于在任何系统上使用的互联网,而不是像c ++这样使用指针的编程语言?
编辑
你们中许多人都在说"保持简单".如果是这种情况,那么为什么流行的编程语言,比如c++使用指针呢?
Ker*_* SB 65
简单的答案是它是一个设计决策.稍微长一点的答案是C++中的指针只是内存操作所必需的,这不是适用于Java的概念(见下文).
Java设想了一个相当系统的,面向对象的编程模型,并且所有基于类的类型基本上总是通过指针来处理,因此这个事实根本不会暴露给用户.
C++中的原始指针在高质量,系统和惯用的编程中也不是非常必要的.什么原始指针允许你做(即指针运算)通常被认为是"不安全的",因此它完全被排除在Java之外.
请注意,人们尝试使用C和C++中的指针进行的许多操作实际上是未定义的行为.正确使用指针会为您提供一组相当有限的选项,其中大多数选项可以在惯用的C++中更好地完成.
关于指针的唯一真正用途是直接内存操作.由于Java不希望你这样做(实际上它的垃圾收集内存管理会主动干扰并被手动内存操作破坏),因此不需要显式指针.
更新后:最后一段是(在我看来)最引人注目的解释:在C++中,你需要能够编写自己的内存管理代码(参见"allocators").内存必须通过指针处理.所以我的严格答案是,当你实现内存管理时,你需要用C++指针,否则就不需要.
Cos*_*lis 32
在内部,对象的引用被实现为指针.虽然没有指针算法......
C++有指针,因为它是作为C的超集构建的,它有指针.C有指针,因为它是在60年代设计的.那时计算机的内存非常少,指针允许执行字符串,数组和参数传递.
这是白皮书Java语言环境的摘录:
2.2.9没有更多指针
大多数研究都认为指针是使程序员能够在代码中注入错误的主要特性之一.鉴于结构已经消失,数组和字符串是对象,对指向这些结构的指针的需求就消失了.因此,Java没有指针数据类型.通过声明对象和对象数组,可以更轻松,更可靠地执行任何需要C中的数组,结构和指针的任务.您可以通过算术索引访问数组,而不是对数组指针进行复杂的指针操作.Java运行时系统检查所有数组索引以确保索引在数组的范围内.
由于指针不正确,你不再有悬空指针和内存垃圾,因为Java中没有指针.
Ste*_*roz 17
Java 确实有指针.实际上,Java中的所有内容都是指针(称为引用).
例外:int,boolean,char等.
因为一切都是指针,不需要星号来发挥作用.
首先,显而易见的问题是Java不保证对象在其整个生命周期内都保持在同一地址.
高效的垃圾收集器依赖于能够移动对象,并且这样做会使(先前)指向对象的任何指针无效.
其次,Java几乎确实有指针.C/C++指针并不像你认为的那样.
A C++指针是不会让你只是指向一个任意的存储器地址和读取它的内容.它不是让你增加一个指针过去的数组的末尾.
语言无法检测您是否执行了这些操作,并且无法在执行此操作时捕获错误.但这并不意味着它是允许的.它是未定义的行为,简而言之,可以做任何事情.
Java几乎确实有指针.这里有一个几乎完整的列表,列出了你可以在C++中使用指针合法地做些什么:
最后一点实际上是Java中唯一不可能实现的.它比人们通常认为的更加严格.它不会给你一个全权委托来创建指向任何旧地址的指针.它不会让你"直接访问内存".
所以Java没有指针,因为:
| 归档时间: |
|
| 查看次数: |
25281 次 |
| 最近记录: |