==和equals的区别

基本数据类型做比较的时候,应该使用==;

引用类型做比较的时候两个都可以; 

==比较的是内存地址,equals方法在object里源代码也是用==来比较,比较的也是内存地址;

但有特殊的例子,比如在string中,==号比较的是内存地址,但是equals比较的是值,因为string这个类比较特殊,JDK帮我们重写了string的equals方法,所以在string里equals比较的是值。有的时候也需要我们重写equals方法,因为在它是object类的一个方法,我们需要比较对象的时候最好是重写该方法,比如我们自定义的类做HashMap的Key时,我们经常需要重写equals方法,并且用equals方法的返回结果是布尔类型的,可以直接用来做判断,但要注意的是用equals方法来比较对象的时候,第一个对象一定得检查是不是存在了,不然会出现空指针异常;

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python运算符is与==的区别

在Python中,关系运算符==用来测试两个对象的值是否相等,而同一性测试运算符is用来测试两个对象是否是同一个对象,如果两个变量是同一个对象,那么它们的内存地...

2324
来自专栏史上最简单的Spring Cloud教程

Java 代理模式

什么是代理 代理是一种设计模式,它的核心思想,是将对目标的访问转移到代理对象上。这样做的好处就是,目标对象在不改变代码的情况下,可以通过代理对象加一些额外的功能...

2148
来自专栏用户2442861的专栏

C++ STL空间配置源码分析以及实现二

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

932
来自专栏GreenLeaves

JS框架设计之对象扩展一种子模块

对象扩展 说完了,对象的创建(框架的命名空间的创建)以及如何解决多库之间的命名空间冲突问题之后,接下来,就是要扩展我们的对象,来对框架进行扩展,我们需要一种新功...

2289
来自专栏java、Spring、技术分享

java字节码

  我们都知道Java字节码是JVM所使用的指令集。java字节码可以分为如下几类:

3272
来自专栏我是业余自学C/C++的

redis_3.0.7_sds.c_sdsIncrLen()

1162
来自专栏从零开始学 Web 前端

*(int*)&p

分析: void(p)(); 这行代码定义了一个指针变量p,p指向一个函数。这个函数的参数和返回值都为void。 &p是求指针变量p本身的地址。 ...

4362
来自专栏Petrichor的专栏

python: map函数

对 sequence 中的 item 依次执行 function(item),将 执行结果 组成一个 List 返回。

1982
来自专栏落花落雨不落叶

杭电2017

3658
来自专栏Hongten

java_自由块(静态块和非静态块)

2022

扫码关注云+社区

领取腾讯云代金券