字符串比较为什么不用‘==’而用‘equals’?

1.首先要知道一个知识点:字符串的创建方式有两种。详细的可以看这篇博客:点我跳转

2.“==”是比较运算法,可以用来比较基本数据和引用类型的数据。
在比较基本数据的时候比较的是值相不相等,而在比较引用类型的数据的时候,比较的是地址相不相等。

当知道1的知识点后,我们就知道,如果字符串创建的方式为:String str1 = "123";String str2 = "123"; 则此时str1和str2存放的都是常量池中同一块的地址,所以str1 == str2的结果为true;

但如果,创建字符串的时候使用的是String str1 = new String("123"); String str2 = new String("123");, 此时str1和str2指向的是堆区中不同的空间,地址当然不一样,所以此时str1 == str2的结果为false。

所以这个时候如果我们用“==”来判断两个字符串是否相等就非常危险!

3.equals是Object类中的一个方法,只能用于比较引用类型的数据。
它比较的也是地址,但是在子类中(如比较字符串的时候)常常会重写,用来比较内容是否相等。

所以比较字符串的时候我们往往会使用equals而不是“==”!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值