mu_bu_shi_ding
mu_bu_shi_ding
采纳率76.9%
2017-01-06 13:58

Java :创建对象时 每一个new出来的对象给给对象变量赋值时 都是一个新地址吗?(如图)

  • java
已采纳

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • Readiay Readiay 4年前

    每一个new出来的对象给给对象变量赋值时 都是一个新地址吗?
    我肯定回答你:是的,每次都是一个新地址。

    在这里有点需要注意,对象是不是一样有两种比较方式,一种就是是不是同一个,一种就是是不是值相等。

    是不是同一个,就是==号比较,例如:你有100块,我有100块,比较的两个对象是同一个物体 你用==比较就是false
    == 比较的是内存中的地址是不是相同的,也就是你问的a与b的地址是不是相同,很显然不同,因为他们不是同一个。

    另外一种就是是不是值相同,例如你的键盘ikbc104c这个型号的,你同事也有一个ikbc104c型号的,
    这两个是相同的,比较的值是不是相同的。就像你有100块,我有100块,我们的钱是一样多的。
    这个使用equalse比较的,如果不覆盖,就是调用Object的equalse方法,比较内存是不是同一个地址。

    点赞 2 评论 复制链接分享
  • abl0430 abl0430 4年前

    你那两个Y不在同一个类中,分配的空间不在地址不一样的 Y被new出来后 你可以实用里面的方法

    点赞 1 评论 复制链接分享
  • oyljerry oyljerry 4年前

    一般情况是每次都会在堆上创建新对象,所以a,b指向的地址不同。
    一些情况为了性能,会有对象池,通过工厂模式等来实现

    http://www.cnblogs.com/aurawing/articles/1887029.html

    点赞 1 评论 复制链接分享
  • u010528826 Mr-Yao 4年前

    每个对象在被实例化时,都会在堆中分配新的地址。如上面代码,你可以把两次实例化后的内存地址打印出来,可以很明确的看出是两个不同的地址。

    点赞 1 评论 复制链接分享
  • sun1021873926 夕阳雨晴 4年前

    是,每次的地址一般情况下都不相同。

    点赞 1 评论 复制链接分享
  • arsaycode ! 不再维护 4年前

    肯定不是同一个,你也可以直接打印出来,或者 用“==”比较一下

    点赞 评论 复制链接分享

相关推荐