Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,就好像风筝的线轴一样,通过线轴总是能够找到风筝,但是它们在实现,原理作用等方面却有区别。

(1)类型:引用其值为地址的数据元素,Java封装了的地址,可以转换成字符串查看,长度也可以不必担心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。

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

(3)类型转换:引用的类型转换,也可能不成功,运行时抛异常或者编译就不能通过。C++指针指示个内存地址,指向内存,对程序来说还都是一个地址,但可能所指的地址不是程序想要的。

(4)初始值:引用初始值为java关键字null。C++指针是int,如不初始化指针,那它的值就不是固定的了,这很危险。

(5)计算:引用不可以计算。C++指针是int,他可以计算,如++或--,所以经常用指针来代替数组下标。

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

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

最新文章

  1. CSS标签
  2. 关于Application.Lock和Lock(obj) 转 http://www.cnblogs.com/yeagen/archive/2012/03/01/2375610.html
  3. *按类的某一字段排序(Lv)
  4. buildroot 制作Linux文件系统初级使用教程
  5. 谷歌 火狐 CSS兼容
  6. IIS32位,64位模式下切换
  7. [Z] 计算机类会议期刊根据引用数排名
  8. 分享总结:更好地CodeReview
  9. Intent官方教程(5)在manifest中给组件添加<Intent-filter>
  10. 前端开发中的SEO
  11. 【hadoop】mapreduce原理总结
  12. 详解文件操作(ifstream、ofstream、fstream)[转]
  13. 【动态规划】HDU 1081 & XMU 1031 To the Max
  14. 发布.NET MVC网站 到Azure
  15. iOS SDAutoLayout图文混排-共享
  16. Sping--ApplicationEvent
  17. 组件 restful_API
  18. java 处理上传exl数据 并导入数据库
  19. day04元组
  20. Android 访问 Webapi 更新UI

热门文章

  1. flask系列四之SQLAlchemy(二)表关系
  2. ZOJ3954 Seven-Segment Display
  3. Gym 101606 F-Flipping Coins(概率dp)
  4. 【codevs2822】爱在心中
  5. c++ list 容器
  6. Docker学习笔记_安装ActiveMQ
  7. Linux gtypist
  8. Django cache
  9. VMware下Ubuntu虚拟机NAT模式 连接Xshell
  10. HDU 6047 Maximum Sequence (贪心+单调队列)