A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何仕映 于 2013-3-15 12:48 编辑

在上一个帖子中我问了是否能变一个函数使之能把两个整数交换。大神们说不能编出来,因为不能操作地址值。今天我突然想起引用型变量中装的就是对象的地址值。请问在JAVA中的引用和C语言中的指针有什么异同。请各位大哥大姐给小弟讲解一下。谢谢。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

正序浏览
冷叙辰 发表于 2013-3-15 12:42
首先, 在Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递, 自然, 在使用对象时实际上都是 ...

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
黄玉昆 发表于 2013-3-15 12:36
你可以看看这个帖子:http://bbs.itheima.com/thread-38115-1-1.html

好的,谢谢您,昆哥。
回复 使用道具 举报
你可以看看这个帖子:http://bbs.itheima.com/thread-38115-1-1.html
回复 使用道具 举报
引用是某个具体对象的一个别名。
而指针可以指向地址空间中的任何位置。
引用是“安全”的,指针不安全。

另外还有c指针可以直接进行算数操作,而不可以对引用直接操作。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马