java中关于==与equals方法不同及equals覆写

原创 2015年11月17日 16:27:50

首先,我们需要明确,==比较的是两个对象的地址,基本类型全部可用==比较(比较的是基本类型元素的值),可是除了基本类型之外的引用类型,如String,因不可比较地址,但其equals方法覆写了,所以可用作比较值。只有覆写了equals方法的才可以比较值,否则都是比较地址(由Object类中的equals得到)。

在关于集合的删除,查询中,一般需要覆写equals方法,因为如不覆写,则不知道通过什么来比较。

public class Book {
private int num;
private String name;
public Book(int num, String name) {
super();
this.num = num;
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book [num=" + num + ", name=" + name + "]";
}

@Override
public boolean equals(Object obj) {                   //==比较的是地址,equals比较的是值
if(this==obj){       
return true;
}
if(obj==null){
return false;
}
if(!(obj instanceof Book)){
return false;
}
Book book=(Book)obj;
if(this.num==book.num&&this.name.equals(book.name)){
return true;
}
return false;
}
}


public class test {


public static void main(String[] args) {
Book b1=new Book(20, "java开发");
Book b2=new Book(20, "java开发");

System.out.println(b1.equals(b2));
}
}

equals方法的覆写可有编译器自动生成,理解原理即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java equals方法和==操作符的不同

今天突然想到equals和==的区别这个问题,发现也就知道一个是比值一个是比地址的,其他云云就非常模糊,用起来也不是很顺手,趁着周五晚上的时间找了一篇文章,感觉讲的挺好,就把它翻译下来,如下: equ...

浅谈对java中的hashset和Treeset 中重写equals()方法的不同及用法

这里说明的是使用set集合时,添加对象时,调用的两种不同的方法,包括重写equals()方法和hashcode()方法以及通过实现Comparable接口重写的 compareTo()方法。举例说明了...

Java基础回顾:覆写equals()方法

覆写equals()方法需要注意的问题: ├ . 不能与一个null值进行比较,否则会报NullPointerException异常 ├ . 类型不同时,不能进行比较,否则会报ClassCastE...

effective_java之一:覆写 equals 和 hasCode 方法

提升下自己的表达及总结能力,也许若干年后可以去做一名合格的讲师~~~ 一、覆写equals方法 为什么要覆写equals方法呢?覆写的原则是什么呢?原因以下: 有时候做到 两个实例对象在 逻辑上是否相...

java重载与重写的区别+重写父类equals方法的完美实现

【0】README0.1) 本文章节【1】和【2】的内容转自 http://www.cnblogs.com/bluestorm/archive/2012/03/01/2376236.html ; ...

java equals与hashCode 两个重要方法的重写

比较两个String 的类内容是否相同时,使用了equals方法。其实,equals方法都是来自Object类,String 类对其进行了重写以满足字符串内容的要求。Object 类中设计这个方法就是...

java对象equals方法的重写

原文来自:http://achievo-bruce-126-com.iteye.com/blog/219942 什么时候需要重写equals()?   我们知道每一个java类都继承自Object...

java中equals()方法的重写

注:部分代码引用自李刚老师的《疯狂java讲义》 equals()方法是Object类中的方法,所有类继承自Object,所以每个类中都有equals()方法。equals public boo...

java中hashMap使用一个对象作为key时,对key进行唯一性表达重写equals()方法

HashMappackage itcast02;public class Student { //学生姓名 private String name; //学生年龄 pr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)