黑马程序员技术交流社区

标题: 在JAVA中的引用和C语言中的指针有什么异同 [打印本页]

作者: 何仕映    时间: 2013-3-15 11:25
标题: 在JAVA中的引用和C语言中的指针有什么异同
本帖最后由 何仕映 于 2013-3-15 12:48 编辑

在上一个帖子中我问了是否能变一个函数使之能把两个整数交换。大神们说不能编出来,因为不能操作地址值。今天我突然想起引用型变量中装的就是对象的地址值。请问在JAVA中的引用和C语言中的指针有什么异同。请各位大哥大姐给小弟讲解一下。谢谢。
作者: 续圆凯    时间: 2013-3-15 11:49
引用是某个具体对象的一个别名。
而指针可以指向地址空间中的任何位置。
引用是“安全”的,指针不安全。

另外还有c指针可以直接进行算数操作,而不可以对引用直接操作。
作者: 黄玉昆    时间: 2013-3-15 12:36
你可以看看这个帖子:http://bbs.itheima.com/thread-38115-1-1.html
作者: 何仕映    时间: 2013-3-15 12:38
黄玉昆 发表于 2013-3-15 12:36
你可以看看这个帖子:http://bbs.itheima.com/thread-38115-1-1.html

好的,谢谢您,昆哥。
作者: 冷叙辰    时间: 2013-3-15 12:42
    首先, 在Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递, 自然, 在使用对象时实际上都是使用的引用。
    Java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的代码不亚于使用早已臭名昭著的"GOTO"语句。Java放弃指针的概念绝对是极其明智的。但这只是在Java语言中没有明确的指针定义,实质上每一个new 语句返回的都是一个指针的引用,只不过在大多时候Java中不用关心如何操作这个"指针",更不用象在操作C的指针那样胆战心惊。
    从实现上来讲,引用可以理解为一种受限的指针,引用底层可以采用指针来实现,也可以采用句柄的方式实现。
    指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算,引用不行,只能进行赋值运算。
作者: 何仕映    时间: 2013-3-15 12:43
冷叙辰 发表于 2013-3-15 12:42
首先, 在Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递, 自然, 在使用对象时实际上都是 ...

好的,谢谢。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2