java中比较字符串的系统函数equal()的返回值_Java在比较字符串的时候,equals 与== 完全一样呀?...

首先要考虑equals跟==的作用:

==相当于是比较两个对象的引用,而equals方法是Object类中定义的,String类对其进行了重写,源代码可以看楼上的分析,首先也使用==比较了引用,之后比较内容。

我们在比较两个字符串时,大多是想比较内容,所以使用equals方法。如果你使用==,IDE其实是会抛一个警告的。

那么为什么你这里的==与equals方法效果一样呢,就要看使用“=”创建字符串对象与使用new创建字符串的区别。

不知道有没有去了解过字符串池,我的理解也不深,需要的话可以自己看看。

第一次使用“=”创建字符串对象时,会查看字符串池中有没有“12”,如果没有,那么就添加一个到池中,然后把引用返回给s;之后再创建s2时,发现池中有,那么直接将这个引用赋给s2,所以s和s2的引用是相同的,造成==比较为true。

可以用new的方式创建字符串,然后看看效果:

String s1 = "12";

String s2 = "12";

String s3 = new String("12");

System.out.println(s1 == s2);//true

System.out.println(s1.equals(s2));//true

System.out.println(s1 == s3);//false

System.out.println(s1.equals(s3));//true

使用new关键字创建字符串对象时,每次都会新创建一个对象,然后把引用赋给变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值