Java基础_119. 字符串_String对象的特点

 

得到String 对象的方式有两种, 一种是使用通过构造方法的方式, 一种是直接赋值的方式.

他们的特点如下:

 s3, s4 本质上是同一个对象.

内存分析:

首先程序从main 方法开始执行, main 方法加载到栈内存中.

 

然后再堆内存中创建一个字符数组.这块内存空间的地址值是001, 并把001赋值给chs.

 chs 通过001 就指向了001这块内存地址.

接下来创建第一个字符串对象. 

 

String s1 的内容就会再main 方法中出现.

 

new String 的内容就会再堆内存中出现.

new 完之后, 他会有一个地址叫002.

这里的参数是字符数组, 所以参考的内容也是字符数组, 而字符数组的内存地址是001, 所以它参考的值来自于001这块内存地址值.

 最后把002 这个内存地址赋值给s1, s1 通过002 就指向了堆内存002这块空间. 

 这行代码同理.

s2 构造方法的参数也是参照字符数组, 所以堆内存中右边的方框也是参照001这块内存空间的内容.

 接下来s1 和s2 的地址进行比较, s1 的地址值是002, s3 的内存地址值是003.所以再控制台输出的是false.

 

 

 

接下来, String s3 首先会出现在main 方法中,  "abc" 这个内容会出现在常量池里面.

"abc " 也有一个地址叫004.

 然后把地址值004 赋值给s3, s3就通过004指向了 常量池的这块空间.

 

 

String s4 = "abc" 同理, "abc" 的地址值也是004.

 s3 和 s4 的地址值相同, 所以输出的是True. 

s1 和 s3 的地址值不相同, 所以输出的是false.

 

main 方法结束, 从栈内存中消失.

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值