String a = new String(“abc“); 到底创建了几个对象

Java String a=new String("ABC")的创建 - Summer1218 - 博客园

String a = new String("a");创建了几个对象?_csdn_yaohailong的博客-CSDN博客

结论:一个或两个

盗个图

这里写图片描述

 1.不过这个图有一点应该标错了,s2应该=0x001,指向方法区中常量池地址,不是堆中的地址

2.分清 

引用 地址  地址存的是什么 引用的值 == equals

引用:指s1,s2

地址:堆中地址 0x0001 和 方法区地址0x001

地址存的是什么:堆中地址存的是 方法区地址;方法区地址存的是变量

引用的值:就是存放内容值 堆中是方法区地址,方法区是什么?如果是变量abc,equals不相等啊?

 == 比较的是内存地址 很明显堆中地址 0x0001 与方法区地址0x001不等

equals 比较的是值,那也不等啊,todo

2.String a = new String("abc"); 常量池中不存 abc,会创建两个对象,开辟两个地址,一个堆中地址,一个方法区中地址,堆中存 方法区中地址,方法区中地址存abc

 

 再盗图

这个标的对

 疑问:

equals比较的到底是什么?是值,为什么相等?

上面推倒重来,如果下面这位兄台说的对,堆中存的不是方法区地址是 abc的值,就解释通了。

https://www.jb51.net/article/186259.htm

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值