== 和 equals 的区别是什么?

使用 == 比较

Java中的8种基本数据类型(byte,short,char,int,long,float,double,boolean)比较他们之间的值是否相等。
引用数据类型,比较的是他们在堆内存地址是否相等。每新new一个引用类型的对象,会重新分配堆内存空间,使用==比较返回false。

使用 equals 比较

equals方法是Object类的一个方法,Java当中所有的类都是继承于Object这个超类。
JDK1.8 Object类equals方法源码如下,即返回结果取决于两个对象的使用==判断结果。

public boolean equals(Object obj) {return (this == obj);
}

在实际使用中,一般会重写定义的class的equals方法,如JDK1.8 java.lang.String类的equals源码如下。
即两个字符串使用 == 相等  或者  两个字符串的所有组成字符都相等返回true,其他情况返回false。这里就定义String根据equals方法判断是否相等的逻辑。

public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String) anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;
}

总结:

== 的作用:
  基本类型:比较值是否相等
  引用类型:比较内存地址值是否相等

equals 的作用:
  引用类型:默认情况下,比较内存地址值是否相等。可以按照需求逻辑,重写对象的equals方法。

PS:可以延伸自己写代码比较一个基本类型的包装类对象使用 == 和 equals进行比较的结果

进一步详细文章还可以参考:
https://www.cnblogs.com/smyhvae/p/3929585.html
http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html
http://www.cnblogs.com/zhxhdean/archive/2011/03/26/1996468.html


【Java面试题与答案】整理推荐

  • 基础与语法
  • 集合
  • 网络编程
  • 并发编程
  • Web
  • 安全
  • 设计模式
  • 框架
  • 算法与数据结构
  • 异常
  • 文件解析与生成
  • Linux
  • MySQL
  • Oracle
  • Redis
  • Dubbo

== 和 equals 的区别相关推荐

  1. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

  2. Java中Object.equals与String.equals的区别

    基础知识 Java的存储空间:寄存器.栈.堆.静态存储区.常量存储区(常量池).其他存储位置. 此处重点介绍堆和常量存储区: 堆:存储new的对象; 常量池:用来存储final static.Stri ...

  3. 二十六、深入HashCode与equals的区别(上篇)

    @Author:Runsen @Date:2020/6/2 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  4. java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

  5. java ==和=_Java ==和equals()的区别

    前言 本篇文章讲的是从JVM角度比较==和equals的区别 一:** Java数据类型分类** Paste_Image.png 1:基本数据类型 又称为原始数据类型,他们之间的比较应该使用(==), ...

  6. 你真的知道 == 和 equals 的区别吗?

    让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致. 在 Java 中 == 和 equals 的区别,感觉只有很少的人能才完全说正确. 常见的错误回答就是:== 基础类 ...

  7. 02 理解==与Equals()的区别及用法 1214

    02 理解==与Equals()的区别及用法 01 02 03

  8. Java中equals()和“==”区别

    Java中equals()和"=="区别 1.对于基础数据类型,使用"=="比较值是否相等: 2.对于复合数据类型(类),使用equals()和"== ...

  9. java中的==和equals的区别

    关于JAVA中的==和equals函数的区别 今天在研读Thinking in java 时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指 ...

  10. 关于Java你不知道的那些事之等等与equals的区别

    等等与equals的区别 前言 代码一 代码二 总结 前言 我们都知道, == 是比较内存地址,equals是比较值 但是这种非常错误的一种观点 ==:比较基本数据类型的时候,比较的是值,引用数据类型 ...

最新文章

  1. AI科研绘图1:零基础入门和基本图形绘制
  2. 王飞跃 | 面向未来的AI人才应该具备这3种思维
  3. Android适应方案汇总(三)
  4. python掌握程度怎么判断-Python数据分析路上,温故而知新
  5. CTF web题总结--绕过正则表达式
  6. es6 Map、Set和Array.from()
  7. python关键词大全_Python 批量获取Baidu关键词的排名并入库
  8. FPGA学习---Modelsim自动仿真
  9. 【ASP.NET 基础】ASP.NET 目录操作
  10. Beautiful Soup 4.2.0 文档
  11. 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
  12. 伟森盛业:法大大电子合同助力供应链数字创新
  13. 解决IEEE会议模板引用bib文件时出现Bibliography not compatible with author-year citations
  14. 关于支付宝CertificateException: X.509 not found的那些事~づ♡ど,JDK同样的版本之间也会有问题!
  15. shell中设置IFS,使用自定义分割符
  16. 关于C之文件结尾EOF与二进制文件换行符
  17. BeanFactory接口
  18. 视频教程-Ajax+jquery从入门到精通2017视频教程-JavaScript
  19. JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例
  20. Jmeter 压测工具

热门文章

  1. Java基础-程序基础
  2. Windows系统深度学习Anaconda、PyTorch软件安装教程
  3. STM32硬件I2C的一点心得(AT24C32C和AT24C64C)
  4. IIC总线协议---以存储芯片at24c64为例
  5. springboot邮件发送 端口587/465不同配置
  6. python中写sql语句添加for循环和变量。(一种SQL引入循环的思想实现)
  7. 解决svn冲突的办法
  8. android安全问题(八)伪造短信(利用原生android4.0漏洞)
  9. 什么是redis?为什么要用redis?(redis的概述)
  10. rtsp h256 流 web 软解播放