Java判等那些事

摘要:

近段时间学习Java,发现了一个比较有意思的现象,两个字符串明明内容相同,但是在用“==”判等的时候,却返回“false”。后来求助了一下前辈们的博客,了解到:在Java中“==”和“equals()”两种判等方法在原理上是存在很大差异的。具体的,可能要看一些例子才能很好的说明白。

Integer a = 20;
float b = 20.0f;
int c = 20;
System.out.println(a==b);  //true
System.out.println(a==c);  //true
System.out.println(b==c);  //true
System.out.println(a.equals(b));  //false
System.out.println(a.equals(c));  //false

String d = "hello";
String e = "hello";
System.out.println(d==e);  //true
System.out.println(d.equals(e));  //true

String f = new String("world");
String g = new String("world");
String h = "world";
System.out.println(f==g);  //false
System.out.println(f.equals(g));  //true
System.out.println(f==h);  //false
System.out.println(f.equals(h));  //true

上述代码和结果其实已经非常清晰了,大概可以看出来,“equals()”是对内容的判等比较,而“==”则不是,至少从结果上看是这样的。那么,“==”究竟是怎么比较的呢?这个就需要从堆栈的存储进行解释了。


这里贴一张前辈的图片,个人觉得,看完这张图片,基本上这一块内容就差不多了。

“==”:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;

 “equals()”:比较的是两个字符串的内容,属于内容比较。


而我们一般情况下的需求基本上都是“equals()”,用到“==”的时候是很少的。这一点,对Java不是很熟悉的小伙伴们可能要特别注意一下下了。

小结:

整体上主要是对Java学习过程中一个小知识点的记录。

小编目前只是博客新人,在校生一名,如果读者对小编写的还比较满意,欢迎关注支持啊!

如果有什么问题,也可以加小编的QQ进行交流,不过,记得在备注里介绍自己哦。(QQ:1329924827)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值