String a = "abc" 与String b = new String("abc")的区别

假如我们,
String a = “abc”; “abc”存在字符串常量池中
String b = “abc”;

if(a == b){} //这里 == 判断的是a b 是否指向”abc”这个字符内存池,在堆区里面的一块相同地址!

——-假如我们这样做——-
String a = “abc”;
String b = “ab” + “c”;

if(a == b){} //这里也是相等的,因为只有b赋值一刻被赋给那块内存,假如存在!

那么我们这样呢?

String a = “abc”;
String b = “ab”;
b = b+”c”;
if(a == b){} //这里就不相等了!!!

=======================new=======================
String a = new String(“abc”); 存在堆区
new的话就不可能进入sting pool了,先在栈区创建一个a指针,在堆区创建一块新的内存区指向它。
用 == 判断就不可能相等了!!因为不是在string pool里面是否有相同的一块地址!
String a = new Stirng(“abc”);
String b = new Stirng(“abc”);
if(a == b){} //这里就不可能相等了!!!因为new了两块地址嘛~~~~~~~

这里写图片描述

但可以用a.equals(b)判断是否相等,并且区分大小写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值