== 和 equals 的区别
== 和 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 的区别相关推荐
- 面试必问一:Java 中 == 和 equals 的区别你知道吗
面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...
- Java中Object.equals与String.equals的区别
基础知识 Java的存储空间:寄存器.栈.堆.静态存储区.常量存储区(常量池).其他存储位置. 此处重点介绍堆和常量存储区: 堆:存储new的对象; 常量池:用来存储final static.Stri ...
- 二十六、深入HashCode与equals的区别(上篇)
@Author:Runsen @Date:2020/6/2 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?
部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...
- java ==和=_Java ==和equals()的区别
前言 本篇文章讲的是从JVM角度比较==和equals的区别 一:** Java数据类型分类** Paste_Image.png 1:基本数据类型 又称为原始数据类型,他们之间的比较应该使用(==), ...
- 你真的知道 == 和 equals 的区别吗?
让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致. 在 Java 中 == 和 equals 的区别,感觉只有很少的人能才完全说正确. 常见的错误回答就是:== 基础类 ...
- 02 理解==与Equals()的区别及用法 1214
02 理解==与Equals()的区别及用法 01 02 03
- Java中equals()和“==”区别
Java中equals()和"=="区别 1.对于基础数据类型,使用"=="比较值是否相等: 2.对于复合数据类型(类),使用equals()和"== ...
- java中的==和equals的区别
关于JAVA中的==和equals函数的区别 今天在研读Thinking in java 时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指 ...
- 关于Java你不知道的那些事之等等与equals的区别
等等与equals的区别 前言 代码一 代码二 总结 前言 我们都知道, == 是比较内存地址,equals是比较值 但是这种非常错误的一种观点 ==:比较基本数据类型的时候,比较的是值,引用数据类型 ...
最新文章
- AI科研绘图1:零基础入门和基本图形绘制
- 王飞跃 | 面向未来的AI人才应该具备这3种思维
- Android适应方案汇总(三)
- python掌握程度怎么判断-Python数据分析路上,温故而知新
- CTF web题总结--绕过正则表达式
- es6 Map、Set和Array.from()
- python关键词大全_Python 批量获取Baidu关键词的排名并入库
- FPGA学习---Modelsim自动仿真
- 【ASP.NET 基础】ASP.NET 目录操作
- Beautiful Soup 4.2.0 文档
- 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
- 伟森盛业:法大大电子合同助力供应链数字创新
- 解决IEEE会议模板引用bib文件时出现Bibliography not compatible with author-year citations
- 关于支付宝CertificateException: X.509 not found的那些事~づ♡ど,JDK同样的版本之间也会有问题!
- shell中设置IFS,使用自定义分割符
- 关于C之文件结尾EOF与二进制文件换行符
- BeanFactory接口
- 视频教程-Ajax+jquery从入门到精通2017视频教程-JavaScript
- JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例
- Jmeter 压测工具