Java引用和C++指针的区别

 我来答
叁生万物
推荐于2017-10-03 · TA获得超过6259个赞
知道小有建树答主
回答量:2871
采纳率:41%
帮助的人:1027万
展开全部
1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。

  2.所占内存: 引用声明时没有实体,不占空间。C++指针如果声明后会用到才会赋值,如果用不到不会分配内存。

  3.类型转换:引用的类型转换,也可能不成功,抛异,或者IDE就不能通过。C++指针只是个内存地址,指向那里,对程序来说还都是一个地址,但可能所指的地址不是程序想要的!

  4.初始值:引用初始值为java关键字null。C++指针是INT,如不初始化指针,那他的值就不是固定的了。

  5.计算:引用是不可以计算的。C++指针是INT,所以他可以计算,所以经常用指针来代替数组下标。

  6.控制:引用不可以计算,所以他只能在自己程序里,可以被控制。C++指针是内存地址,也可以计算,所以他有可能指向了一个不归自己程序使用的内存地址,对于其他程序来说是很危险的,对自己程序来说也是不容易被控制的。

  7.内存泄露:JAVA引用不会产生内存泄露。C++指针是容易产生内存泄露的,所以程序员要小心使用,及时回收。

  8.作为参数:JAVA的方法参数只是传值,引用做为参数使用时候,回给函数内引用的值的COPY,所以在函数内交换两个引用参数是没意义的,因为
函数只交换的参数的COPY值,但在函数内改变一个引用参数的属性是有意义的,因为引用参数的COPY所引用的对象是和引用参数是同一个对象。
C++指针做为参数给函数使用,实际上就是他所指的地址在被函数操作,所以函数内用指针参数的操作都将直接作用到指针所指向的地址(变量,对象,函数,等
等)。

  9.操作符和声明:java里用"."。C++指针用"->" 用"*"声明指针。(似乎这条没什么用!)

  10.本质:java中的引用和C++中的指针本质上都是想通过一个叫做引用或者指针的东西,找到要操作的目标(变量 对象等),方便在程序里操作。所不同的是JAVA的办法更安全,方便些,但没有了C++的灵活,高效。

  java中的引用和C++中的指针,他们最好不要混在一起,也不要认为是一回事,只不过他们的作用有些相似,总叫人不自觉的对比。但在我们写
JAVA程序的时候最好忘记C++的指针,写C++程序的时候,也不要老惦记着JAVA的引用。只要记得
引用无大小,安全,不可计算,强转时要小心就好了。

参考
http://blog.csdn.net/b271737818/article/details/3931913
双生321
2012-10-23
知道答主
回答量:2
采纳率:0%
帮助的人:2.8万
展开全部
JAVA的引用和C++的引用,二者本质上是不同的,c++中一个引用指向的地址不会改变,改变的是指向地址的内容,然而java中引用指向的地址在变。
如果非要对比着看,那么Java中的“引用”倒是和C/C++的指针更像一些,和C++的“引用”很不一样。
C++的“引用”是从一而终的,而Java的“引用”可以改变被引用的对象。
这些内容在java教程里都可以读到,我学过c++,java,现在从事as3开发,对这三门语言都区别过,望楼主采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
推荐于2017-09-12 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3507万
展开全部
c++也有引用啊 和java的一样
指针的特别之处在于指针可以直接对内存进行操作
新定义的指针如果没有给它手动指向一块内存的话(就是给指针赋值)指针就可能指向任意内存 如果你修改这个指针指向的值的话 可能造成包括系统崩溃在内各种意想不到的情况. 所以指针在安全性上有一定问题(不过用好指针的话真的很方便)
引用是完全安全的 你怎么用也不可能造成指针上面那样的后果
java由于上边说的原因吧指针给隐藏了 不能由程序员自己调用 但是实际上java还是有指针的...比如那个很常见的 空指针异常.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式