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

java的引用并不是引用,而是隐藏的指针!!!要把java的引用当作指针来看!!!

而c++的引用才是真正的引用

java的引用只是能操作原内存,不能操作指向内存的指针,而c++的引用不仅是操作原内存,更是操作指向原内存的指针!

c++里对对象的引用相当于二级指针,而java里的引用只是一级指针

new 类名();创建对象
类名 xxx 创建对象的引用

JAVA的引用反应到c里准确有三点

类 string s = new string();

一、java的引用实际上是个一级指针,

在使用new的对象对其赋值时,new的对象省略了&,平时使用java的引用时省略了*即真实应该是string * s1 = new string(); string * s2 = new string();

二、在对象的引用之间互相赋值时,都是赋的各自存储的地址值,

即s1 = s2;也就说,java无法存在二阶指针,因为创建出来的实际上都是一级指针。而c++里一级指针的引用(当然实际上他是个二级指针),为 string * & s3 = s1;当*s3时可以修改s1所指向的内存,但引用的作用在于,他也可以修改s1所存储的地址,例s3 = new string();此时s1的地址也已经变化,总得来说

c++的引用时高阶指针向低阶指针,而java引用是同阶指针指向同阶指针,总得来说其实都是一阶指针,故其实都是自身存储的地址值在相互间的传递,而不是将自身地址值赋给其他的指针

故java中引用间互相传递可以更改所指向的共同内存,却无法更改各自所存储的地址值,即无法更改各自的引用所指向的方向

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值