重写equals和toString

public class Cell {

public int x;

public int y;

public Cell(int x, int y){

this.x = x;

this.y =y;

}

public String toString(){

return +x+","+y;

}

public boolean equals(Object obj){

if(this == obj){

return true;

}

if(obj == null){

return false;

}

if(obj instanceof Cell){

Cell c = (Cell) obj;

return this.x == c.x && this.y == c.y;

}else{

return false;

}

}

时间: 2024-12-23 00:08:00

重写equals和toString的相关文章

第十四章----面向对象equals和toString的重写

权限修饰符 成员变量初始化 1.toString方法的重写 public class Test extends Object { private int id; private String name; public Test(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Test [id=" + id + ", nam

【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明

在项目开发中,我们都有这样的经历,就是在新增表时,会相应的增加java类,在java类中都存在常见的几个方法,包括:equals(),hashcode(),toString() ,compareto()这四个方法,对于刚刚接触java的初学者来说,对于这块可以没有更深入的了解,只是单纯意义上的复制粘贴,并没有很好的去了解.现在借用这个时间给大家说说这几个方法作用. equals: 比较两个对象相等时使用(需要配合Hashcode一起使用,在后边再进行详细解释)   hashcode: 重写has

Java 中equals和toString()方法重写

1,equals方法 (1)什么时候需要重写? 如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals (2)怎么重写? class A { public int i; pulic A(int i)//构造函数 {this.i=i; } public boolean equals(Object obj)//重写equals {A aa=(A)obj; if(this.i==aa.i) return true; else return flase; } } publ

基础学习day08---多态、简单工厂、Object类equals和toString

一.多态 1.1.多态概念 定义:某一类事物的多种存在形态.        例:动物中猫,狗.    猫这个对象对应的类型是猫类型:猫 x = new 猫();    同时猫也是动物中的一种,也可以把猫称为动物:动物  y = new 猫();    动物是猫和狗具体事物中抽取出来的父类型.    父类型引用指向了子类对象. 体现:    父类或者接口的引用指向或者接收自己的子类对象. 作用:    多态的存在提高了程序的扩展性和后期可维护性.        前提:    1. 需要存在继承或者

JAVA中重写equals()方法的同时要重写hashcode()方法

object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码.如下:(1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true (2)当obj1.ha

Java的重写equals但不重写hashCode方法的影响

首先,说下equals和hashCode的关系.JDK API中关于Object类的equals和hashCode方法中说过,总结起来就是两句话:equals相等的两个对象的hashCode也一定相等,但hashCode相等的两个对象不一定equals相等. hashCode类似于一个位置值(不叫地址值,是想把每个对象所在的位置做地址值),HashSet.HashMap等集合类中常会用到. 上图中假设是对象在内存中的模型,则7—c就是位置值即hashCode,而71—74就是地址值.所以x,y和

JAVA中重写equals()方法为什么要重写hashcode()方法?

object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码.如下:(1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true (2)当obj1.ha

JAVA中重写equals()方法为什么要重写hashcode()方法说明

重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值.如果在将一个对象用put()方法添 加进HashMap时产生一个hashCode()值,而用get()取出时却产生了另外一个 hashCode()值,那么就无法重新取得该对象了.所以,如果你的hashCode()方法依赖于对象中易变的数据,那用户就要小心了,因为此数据发 生变化时,hashCode()就会产生一个不同的hash码,相当于产生了一个不同的"键". Object的h

关于重写equals()与hashCode()

在HashMap与HashSet中,是不允许元素重复的. 在判定时比较元素的hashCode()是否相等,equals()是否返回true,那么问题来了 这是一个Person类 public class Person {    private String id;    private String name;    private Integer age;    public String getId() {        return id;    }    public void setI