一段关于对象引用的形象解释

本文通过一个简单的Java示例,深入浅出地解析了对象引用的工作原理。解释了如何通过不同引用变量操作同一对象,以及方法调用中参数传递机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们先看一段代码

class Dog ...{
  String name;
  
public static void main(String[] args) ...{
    
// 我知道这段代码就是让d指向了堆中的Dog对象,但书里说smalldog也指向了堆中的同一个Dog对象
    Dog d = new Dog();
    d.go(d);
  }

  
void go(Dog smalldog) ...{
    
// 是这里让smalldog也指向了Dog对象吗?明明没有等号嘛,谁能解析一下吗?
    
// 没有等号也能让smalldog指向Dog对象?我很笨的
    smalldog.setName("wangcai"); 
  }

  
void setName(String dogname) ...{
    name 
= dogname;
  }

}

引用变量d 
引用变量smalldog 

smalldog=d 
那么smalldog也指向d所指向的对象,是吗?那么我的这个推理,这个推理该用什么理论来解释呢,或者定义什么的,谁让我消化消化啊


我的解释: 
1 Dog 是一致狗 
2 我再一张纸上写了他的地址,从这个地址肯定能找到它。 这张纸叫d 
3 我朋友也想看看这个狗,我就又写了一张纸,一次性使用的,上面写的相同的地址,这张纸叫 smalldog 
4 我朋友根据smalldog的地址,找到了狗,并给狗改了名字 setName(); 
5 我朋友离开了,那个smalldog 纸片也就自动销毁了(smalldog 是一个函数变量) 
6 可是,我的那张纸d, 上面依然写着那个狗的地址 

7 请注意,我的纸 和 我朋友的纸是完全不同的2张纸,但是他们上面写的狗的地址是相同的。 

个人理解,引用就是复制了一份地址。







<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值