`
wangchongbiao
  • 浏览: 52667 次
  • 性别: Icon_minigender_1
  • 来自: 河北、沧州
社区版块
存档分类
最新评论

“=="和equals方法究竟有什么区别

    博客分类:
  • java
阅读更多

今天看到一篇讲得很好,很通俗易懂的文章,在这里转载一下。

 

 == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只 能用==操作符。如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量 是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
 
 equals()方法是用 于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码: String a=new String("foo"); String b=new String("foo"); 两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相 同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。在实际开发中,我们经 常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大 量这样的错误。记住,字符串的比较基本上都是使用equals()方法。如果一个类没有自己定义equals()方法,那么它将继承Object类的 equals()方法,Object类的equals()方法的实现代码如下: boolean equals(Object o){ return this==o; } 这说明,如果一个类没有自己定义equals()方法,它默认的equals()方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals()和使用==会得到同样的结果,如果比较的是两个 独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals()方法,由你自己写代码 来决定在什么情况即可认为两个对象的内容是相同的。

分享到:
评论

相关推荐

    ==和equals方法究竟有什么区别

    ==和equals方法究竟有什么区别?  == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。  ...

    ==运算符和Equals()方法区别

    ==运算符和Equals()方法区别,从网上找到的,大家看一看吧~

    ==和equals的区别

    java中比较值大小,==和equals的区别,基本数据类型和引用数据类型比较值方法

    Java中==运算符与equals方法的区别及intern方法详解

    主要介绍了Java中==运算符与equals方法的区别及intern方法详解的相关资料,需要的朋友可以参考下

    equals(Object) 与 == 的区别

    equals(Object) 与 == 的区别

    C#中的 == 和equals()区别浅析

    主要介绍了C#中的 == 和equals()的区别,对不同点进行了阐述,感兴趣的小伙伴们可以参考一下

    详解java==运算符和equals()方法的区别

    主要介绍了java==运算符和equals()方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java中==与equals的区别小结

    主要介绍了Java中==与equals的区别小结,本文总结结论:== 与 equals()比较的内容是不同的,equals()方式是String类中的方法,它用于比较两个对象引用所指的内容是否相等,而 == 比较的是两个对象引用的地址是否相等,...

    关于Java中的“==”与equals()

    书上的一个例子说明了“==”与equals()方法的区别。 以下是例子代码(摘自《Java核心技术》卷一): Employee.java package equals; import java.time.*; import java.util.Objects; /* * 一个{@Employee}代表

    【面试】hashCode与equals两者之间的关系 / == 和equals / 为什么要重写equals方法 / 重写equals /hashcode方法 / 为什么要重写hashCode方法

    文章目录1、hashCode与equals两者之间的关系2、== 和equals的区别`3、为什么要重写equals()方法?4、重写equals()方法5、为什么要重写hashCode()方法?6、什么时候需要重写hashCode()方法?7、重写hashCode()方法: ...

    Java中==与equals的区别

    用此blog记录我学习的过程,文中若有不恰当的地方,还望友情指出互相学习。 一、== 主要有两种比较形式 基本数据类型(也称原始数据类型):byte,...Java中所有的类都继承自Object类,equals()方法就在Object类中被

    Java 常见问题 希望能给你带来帮助

    Java常见问题:我声明了什么!"=="和equals方法究竟有什么区别? 看一下Object对象的equals方法是如何实现的

    Java面试宝典2014版

    一. Java基础部分 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2、Java有没有goto? 3、说说&和&&的区别。 4、在JAVA中如何跳出当前的多重嵌套...11、"=="和equals方法究竟有什么区别?

    面试题~ equals() 和 == 区别

    = = :运算符 可以使用在基本数据类型变量和引用数据类型变量中 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同) ...说明:Object类中定义的equals()和**==*

    java中hashcode()和equals()和==的详解

    有许多人学了很长时间的Java,但一直不明白hashCode方法的作用以及equals()和==的区别,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。总的来说,Java中的集合(Collection)有两类,...

    java程序员滴宝典

    问题一:我声明了什么! 问题二:"=="和equals方法究竟有什么区别? 问题三:String到底变了没有? 问题四:final关键字到底修饰了什么? …..

    2018java面试题分析

    2018java面试题分析 "=="和equals方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了

    学习java这些你搞懂了吗

    问题一:我声明了什么! 问题二:"=="和equals方法究竟有什么区别? 问题三:String到底变了没有? 问题四:final关键字到底修饰了什么? …..

    java你必须搞懂的问题

    问题一:我声明了什么! 问题二:"=="和equals方法究竟有什么区别? 问题三:String到底变了没有? 问题四:final关键字到底修饰了什么? …..

    Java面试题和解题答案

    JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib...

Global site tag (gtag.js) - Google Analytics