关闭

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

208人阅读 评论(0) 收藏 举报
分类:

首先,我们需要明确,==比较的是两个对象的地址,基本类型全部可用==比较(比较的是基本类型元素的值),可是除了基本类型之外的引用类型,如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方法的覆写可有编译器自动生成,理解原理即可。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15039次
    • 积分:256
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:24篇
    • 译文:0篇
    • 评论:0条
    文章分类