为了账号安全,请及时绑定邮箱和手机立即绑定

变量、对象和引用之间有什么区别?

变量、对象和引用之间有什么区别?

小唯快跑啊 2019-06-06 14:32:07
变量、对象和引用之间有什么区别?到底有什么区别变量, 对象,和参考文献?例如:它们都指向某种类型,而且它们都必须持有值(当然,除非您有临时的空类型),但是它们的功能和实现究竟有何不同呢?例子:Dog myDog = new Dog(); //variable myDog that holds a reference to object Dogint x = 12; //variable x that hold a value of 12他们有相同的概念,但他们有什么不同?
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在解释这些概念时,我经常使用以下类推。


想象一个物体是一个气球。变量是人。每个人要么在价值类型团队或在参考类型团队。他们都按照以下规则玩游戏:

规则价值类型:

  • 你把一个装满空气的气球抱在怀里。

    (值类型变量存储对象。)

  • 你一定总是拿着一个气球。

    (值类型不可空。)

  • 当其他人想要你的气球时,他们可以引爆自己相同的气球,并把它抱在怀里。

    (在值类型中,对象被复制。)

  • 两个人不能拿同一个气球。

    (值类型不共享。)

  • 如果你想拿一个不同的气球,你必须弹出你已经拿着的气球,然后再拿另一个气球。

    (替换时销毁值类型对象。)

规则参考类型:

  • 你可以拿着一根绳子,这条绳子通向一个充满氦气的气球。

    (引用类型变量存储对象的引用。)

  • 允许您持有一条字符串,或者根本不持有一条绳子。

    (引用类型变量为空。)

  • 当其他人想要你的气球时,他们可以得到他们自己的一根绳子,并把它绑在和你一样的气球上。

    (在引用类型中,引用被复制。)

  • 多个人可以拿着一根绳子,这些绳子都通向同一个气球。

    (可以共享引用类型对象。)

  • 只要至少有一个人仍然持有一个特定的气球的绳子,气球是安全的。

    (只要可以访问引用类型对象,它就是活动的。)

  • 对于任何一个特定的气球,如果每个人最终都放开它,那么气球就会飞走,没有人能再够到它了。

    (引用类型对象可能在某个时候变得不可访问。)

  • 在比赛结束之前的某个时间点,由于大气压力,丢失的气球可能会自行爆炸。

    (不可访问的对象符合垃圾收集的条件,这是不确定的。)


查看完整回答
反对 回复 2019-06-06
?
慕少森

TA贡献2019条经验 获得超9个赞

你可以把它想象成回答问题。

物体是什么.。
它就像世界上任何物质事物一样,是一种“事物”,它本身是可识别的,具有与其他“事物”不同的重要属性。就像你知道狗是一只狗,因为它叫,移动它的尾巴,追求一个球,如果你扔它。

变量是一个.
就像你看着自己的手。每一只手本身就是一只手。它们的皮肤里有手指、指甲和骨头,但你知道其中一个是你的左手,另一个是右手。也就是说,你可以拥有两件相同类型/种类的“东西”,但每个事物都可能因其自身的不同而不同,也可能有不同的价值。

推荐信是指.。
如果你看一条街上的两栋房子,虽然它们有自己的立面,但你可以通过它们独特的地址到达每一栋房子,也就是说,如果你离这里有三个街区远,或者在另一个国家,你可以知道房子的地址,因为它们仍然在你离开它们的地方,即使你不能直接指向它们。

现在为了编程起见,用C+方式的例子

class Person{...}Person Ana = new Person(); //An object is an instance of a class(normally)

也就是说,安娜是一个人,但她有独特的属性,使她有别于另一个人。

&Ana //This is a reference to Ana, that is to say, a "where" does the variable 
     //"Ana" is stored, wether or not you know it's value(s)

Ana本身就是用来存储名为“ana”的人的属性的变量。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 1344 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信