Java基础(Tostring()和equals())

1.重写ToString()方法

Object的toString()方法帮助我们返回一个字符串,这个字符串的格式是固定的:类名@hashcode。

  • 作用:返回该对象的字符串表示,默认情况下的数据对我们来说没有意义,一般建议重写该方法。
  • 案例:
  • package day0528;
    //所有类都默认继承object类
    public class demo2 {
        public static void main(String[] args) {
             Student student=new Student();
            student.age=18;
            student.name="yyy";
            student.sex="女";
            System.out.println(student.toString());
        }
    }
    class Student{
        String name;
        String sex;
        int age;
    
        //重写ToString方法,在方法里面,打印所有属性的值
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

2.重写equals()方法

  • 作用:用于比较两个对象是否相同

注意:

           重写equals时第一件事就是判断给定的对象是否和当前对象为同一类型。不是同一类型直接返回false,不具有可比性。               equals比较前需要进行安全验证,确保给定的对象不是null,obj若是null,说明该引用变量没有指向任何对象,那么就不能引用obj所指向对象(因为对象不存在)的属性或方法,若这么做会引发NullPointerException,空指针异常!

  • 案例:
package day0528;
//重写equals方法
public class demo3 {
    public static void main(String[] args) {
        Student1 s1=new Student1("yyy",18);
        Student1 s2=new Student1("yyy",18);
        Student1 s3=new Student1("wtc",18);
        System.out.println("s1.equals(s2)"+s1.equals(s2));
        System.out.println("s1.equals(s3)"+s1.equals(s3));
    }
}
class Student1{
    String name;
    int age;
    public Student1(String name,int age){
        this.name=name;
        this.age=age;
    }
    @Override
    public boolean equals(Object obj){
        if(this==obj){
            return true;
        }
        if(!(obj instanceof Student1)){
            return false;
        }
        Student1 objStudent=(Student1)obj;
        if(this.name.equals(objStudent.name) && this.age==objStudent.age){
            return true;
        }
        return false;
    }
}
发布了75 篇原创文章 · 获赞 164 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_41679818/article/details/90678329