美文网首页
"=="和 equals()方法的区别

"=="和 equals()方法的区别

作者: SuperMarry | 来源:发表于2018-07-27 00:42 被阅读0次

简述

         "=="操作符专门用来比较两个对象的值是否相等,即用于比较变量所对应的内存中的数值是否相等。

         equals()是用于比较两个独立对象的内容是否相同。

根据上面的简述,我们来看一段代码。

按照上面对==和equals的简述,equals比较的是对象的内容是否相等,我们可以看到p1和p2的id都为1,username都为老李,所以对象的内容是应该是相等的。==比较的是内存中所存储的值是否相等,如果一个变量指向的数据是对象类型的,这时候就涉及到了两块内存,变量占一块内存,对象也占一块内存,即p1是一块内存,new People(xxx)又是一块内存,此时变量内存中存储的是另外一块内存,如果p1和p2相等,那就等于两次new开辟出来的是同一块内存,这显然是错误的。我们来看下程序的运行结果

怎么回事?按照上面的分析,equals验证的应该要相等才对,怎么变成这样呢?

我们来看看People的实现

原来是因为People没有实现自己的equals()方法,它默认的equals()方法是从Object中来的,我们来看下它的源码:

           public boolean equals(Object obj) {

                           return (this ==obj);

                 }

其内部就相当于调用==操作符,所以输出的是false。

那我们要怎么重写equals()方法,才能使p1==p2为true呢?我们来看下具体的代码。

相关文章

  • Java 比较相等

    Java Equals() 特性 Equals() 和 == 的区别 重写Equals方法 重写HashCode方法

  • HashCode和Equals的区别

    HashCode和equals的区别: String方法的equals方法和HashCode方法 String的H...

  • 【面试1】

    基础 1、equals和==(equals和==的区别)equals:是Object的一个方法,实现对象的比较;复...

  • Java(十) 字符串

    String 对象创建的三种方式 常用方法 == 和 equals 方法的区别 equals 指内容是否...

  • ==和equals

    ==和equals的区别: ==和equals方法都是用来比较两个变量/对象是否相等。 如果没有重写equals方...

  • "=="和 equals()方法的区别

    简述: "=="操作符专门用来比较两个对象的值是否相等,即用于比较变量所对应的内存中的数值是否相等。 equa...

  • equals方法和==的区别

    equals方法和==的区别 首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用。这...

  • 原来String是这样的(下)

    前言 回顾 我们讲到了String的equals和==的区别: equals根据你编写的方法体来进行比较,而==是...

  • Java基础-==和equals的区别?

    首先equals和“==”的第一个区别就是,equals是方法,而“==”是运算符。在了解两者的具体区别时,我们首...

  • == 和 Equals--java12(08/12/2015)

    == 和 Equals 的区别 1. == 是一个运算符。 2.Equals则是string对象的方法,可以.(点...

网友评论

      本文标题:"=="和 equals()方法的区别

      本文链接:https://www.haomeiwen.com/subject/lhnimftx.html