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

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

我们先看一段代码

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" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
MySQL DATE类型详解:存储原理、优化技巧与实战案例 DATE类型是关系型数据库中处理日期数据的基础数据类型,采用3字节存储YYYY-MM-DD格式数据,范围从1000-01-01到9999-12-31。其核心原理在于无需时区转换的日期存储机制,适合需要精确日期的业务场景。在技术价值层面,合理使用DATE类型能避免VARCHAR存储带来的性能损耗和隐式转换问题。实际应用中需特别注意零日期(0000-00-00)处理和日期范围溢出问题,电商促销、金融交易等对日期敏感的系统尤其需要优化日期查询性能。通过建立函数索引、避免WHERE子句中使用日期函数等优化手段,可显 阅读详情

相关推荐

关于变量的详细生动的解释

以故事的形式讲解变量,生动形象,让读者更深入的理解变量,以便灵活运用变量

JAVA中在类中声明方法的时,public void dog和直接void dog有什么区别?

public void dog 称之为公共的。被它修饰的类,属性和方法不仅可以跨类访问, 而且允许跨包(package)访问。 void dog没有加任何修饰符,我们通常说这是默认的访问模式。这种访问模式只允许在同一个包中进行访问。 除了这两个修饰符外,还有private和protected两种修饰符。 private被称为是私有的。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不

3941

深入Google DroidGuard:剖析其自定义虚拟机如何守护Android应用安全(附pcbc文件机制解析)

本文深入解析Google DroidGuard自定义虚拟机如何通过独特的架构设计和加密机制保护Android应用安全。DroidGuard采用动态密钥派生、全加密执行环境和pcbc文件机制,有效防御逆向工程和自动化攻击,为移动安全提供新思路。

weixin_34254464的博客 281

构造方法提示错误Duplicate modifier for the method XXX in type XXX

写代码时非常低级的错错误,当时没仔细看自己写的该方法,结果是该构造方法多写了权限修饰符,现记录如下: private final ExecutionEnvironment env; private final String jobId; private final CalJobParam.JdbcParam dataSink; public public IndicatorP...

LiHuiJUNMate的博客 9459

C语言 变量与指针 形象解释

初学者可能觉得C语言指针难以理解,而指针的确是C的精华所在,所以必须弄清它的本质 我一直喜欢把程序设计抽象化的定义具体类比到实例来理解,这样更容易解释和说明,别人也容易听懂 这次先拿指针与引用开刀吧!我们把变量具体化成生活中的地址来解释 首先来个声明: int stuAddr = 5; int &hustStuAddr = stuAddr; printf("%s",&stuAddr

tianhaoray的专栏 1301

(转)一段关于对象引用形象解释

classDog{ Stringname; publicstaticvoidmain(String[]args){ Dogd=newDog();//我知道这段代码就是让d指向了堆中的Dog对象,但书里说smalldog也指向了堆中的同一个Dog对象 d.go(d); } voidgo(D...

weixin_30674525的博客 87

对象实体和对象引用的区别

初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。 为便于说明,我们先定义一个简单的类: class Vehicle { int passengers; int fuelcap; int mpg; } 有了这个模板,就可以用它来创建对象: Vehicle veh1 = new Vehicle(); 通常把

IT圈的01羊的博客 2784

对象引用变量

    Vehicle veh1 = new Vehicle(); veh1是对象引用变量,它不是对象的容器,而是类似于指向对象的指针,或者可以说是地址。对象只会存在垃圾回收的堆上。     Vehicle veh1 = new Vehicle(); 代表取得Vehicle对象的方法,以字节形式,放进引用变量veh1中。而对象本身没有放进变量中。不同于基本数据类型 byte x = 7; 代表数字...

子衿_青青的博客 1697

java对象与对象引用变量

Java对象及其引用 先搞清楚什么是堆,什么是栈。 Java开辟了两类存储区域,对比二者的特点 存储区域 存储内容 优点 缺点 回收 栈 基本类型的变量和对象的引用变量 存取速度比堆要快,仅次于寄存器,栈数据可以共享 存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量 当超过变量的作用域后,Java会自动释放...

an-ping的博客 1万+

JAVA 对象引用,以及对象赋值

关键字: java对象 引用  Java对象及其引用  关于对象与引用之间的一些基本概念。         初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,          那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋

yafeil的博客 298

java对象引用和回收

Java对象及其引用 摘自http://dev.csdn.net/author/beepbug/f5c70b05579f46d4996ce9da4f75dbc0.html 初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,

hanxinis的专栏 1287

对象引用与对象的区别

订阅     初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。        为便于说明,我们先定义一个简单的类:        class Vehicle

suling1022的专栏 273

你真的明白吗?--Java对象以及对象引用

前言:生活百般滋味,人生需要笑对。 工作了一段时间,对java对象和对象引用之前老是存在分不清的情况,为了更好的理解java面向对象思想,我想彻底弄清它。 为了便于说明我们来定义一个类 class Animal{            String name;           int size;            } 有了上述的类,那么我们可以创建一个对象    A

wu371894545的博客 643

java允许对象引用自己_java 中 对象引用与对象的区别 (转)

初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。为便于说明,我们先定义一个简单的类:class Vehicle {int passengers;int fuelcap;int mpg;}有了这...

weixin_39874350的博客 127

Java对象及对象引用变量

Java对象及其引用 关于对象与引用之间的一些基本概念。 初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用, 那实在没法很好地理解下面的面向对象技术。把自己的一...

chengpuke7520的博客 123

对象引用与对象的区别以及堆栈的区别

初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。 为便于说明,我们先定义一个简单的类: class Vehicle { int passengers;...

weixin_30925411的博客 92
上一篇: 关于数据库连接池的形象比喻
下一篇: 关于接口的理解问题
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值