C/C++里的指针与Java里的引用

C/C++里的指针与Java里的引用

说到指针,先看看什么是变量吧。

变量:是计算机语言中能储存计算结果或能表示值抽象概念
变量本质是内存单元,其有两个属性:值、地址

指针:即地址,传递数据效率高,为了便捷
指针变量:存放地址的内存单元

比如:定义 int x=2
解释:分配一个int型4字节的内存单元,将数据2送入到此内存单元

比如:定义 int y=x+3
解释:申请一个整型内存单元,将x中内存单元值取出来读到cpu,与3计算,然后写入到此内存单元

MOV AX [0X00FF44(假设x地址)]
ADD AX 3
MOV [0X00FF40(假设y地址)] AX

指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变,总是指向最初的对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

引用:一个储存了某个对象地址的变量,它储存的不是对象本身,而是对象的地址。

比如:Point point = new Point();的含义是:首先实例化一个对象 new Point() ,然后定义一个引用point指向这个实例。

point = point1 不是讲实例point赋值给point1,而只是改变了引用的关系,即point也指向了point1指向的实例
在这里插入图片描述
测试代码实例:

public class text {
   public static void main(String[] args) {
    Point p1 = new Point();
    Point p2 = new Point();
    p1.init(0,0);
    p2.init(3,4);
    System.out.println("p1:"+ p1.hashCode()); //可理解为地址
    System.out.println("p2:"+ p2.hashCode());
    System.out.println("p1:"+ p1.format());
    System.out.println("p2:" + p2.format());

    p1 = p2;
    System.out.println("p1:"+ p1.hashCode());
    System.out.println("p2:" + p2.hashCode());
    System.out.println("p1:"+p1.format());
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值