美文网首页
toString、==与equals方法

toString、==与equals方法

作者: Yanl__ | 来源:发表于2019-11-19 21:40 被阅读0次

1.toString
2.==与equals方法

1.toString方法

1.1 toString源码

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

在Object类中定义类toString方法,返回值是String类型。默认返回类名+@+16进制的的hashcode
1.2 toString()测试与重写

class Person2 {
    String name;
    int age;
}
public class TesttoString {
    public static void main(String[] args) {
        Person2 p2 = new Person2();
        System.out.println(p2);
    }
}

输出结果:
cn.yan.oo.Person2@61bbe9ba

重写toString方法

class Person2 {
    String name;
    int age;

    public Person2(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //重写toString方法
    public String toString(){
        return "名称:"+name+",年龄:"+age;
    }
}
public class TesttoString {
    public static void main(String[] args) {
        Person2 p2 = new Person2("yan",18);
        System.out.println(p2);
    }
}

输出结果:
名称:yan,年龄:18

2.==与equals方法

  • ==:代表双方是否相同。如果是基本类型,则表示值相同。如果是引用类型,则表示地址相等。
  • equals:默认是比较两个对象的hashcode。是同一个对象的引用时返回true,否则返回false。equals就是调用的==来判断两个对象是否相同。可以自己重写equals方法来改变判断方式
//重写equals
class Person3{
    int id;
    String name;

    public Person3(int id, String name) {
        this.id = id;
        this.name = name;
    }
    // 重写equals方法
    public boolean equals(Object obj){
        if(obj==null) {
            return false;
        }else{
            if(obj instanceof Person3){
                Person3 c = (Person3) obj;
                if(this.id==c.id){
                    return true;
                }
                return false;

            }
            return false;
        }
    }

}
public class TestEquals {
    public static void main(String[] args) {
        Person3 p1 = new Person3(1, "yan");
        Person3 p2 = new Person3(1, "yan");
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
    }
}

相关文章

网友评论

      本文标题:toString、==与equals方法

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