常用API(Java)


常用API

Object

toString方法

场景:当我们使用toString方法想要输出对象变量时,官方提供的toString方法会直接输出对象所在的地址,而不是我们想要的对象变量,所以我们要把toString方法进行重写。

改写代码:

  @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '/'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }

调用代码:

public static void main(String[] args) {
        Student s = new Student("沙雕", '男', 23);
         String rs = s.toString();
         System.out.println(rs);

         System.out.println(s.toString());

        // 直接输出对象变量,默认可以省略toString调用不写的
        System.out.println(s);
    }

equals方法

场景:当我们想要使用equals方法比较集合中两个对象变量是否相等时,使用官方提供的equals方法比较的是两个对象的地址,结果显然为false(比较的对象不是同一个),那么我们需要将equals方法进行重写。

官方代码改写:

 /**
     定制相等规则。
     两个对象的内容一样就认为是相等的
     s1.equals(s2)
     比较者:s1 == this
     被比较者: s2 ==> o
     */
    @Override
    public boolean equals(Object o) {
        // 1、判断是否是同一个对象比较,如果是返回true。
        if (this == o) return true;
        // 2、如果o是null返回false  如果o不是学生类型返回false  ...Student !=  ..Pig
        if (o == null || this.getClass() != o.getClass()) return false;
        // 3、说明o一定是学生类型而且不为null
        Student student = (Student) o;
        return sex == student.sex && age == student.age && Objects.equals(name, student.name);
    }

自己代码改写:

  /**
       自己重写equals,自己定制相等规则。
        两个对象的内容一样就认为是相等的
     s1.equals(s2)
     比较者:s1 == this
     被比较者: s2 ==> o
     */
 /*   @Override
    public boolean equals(Object o){
        // 1、判断o是不是学生类型
        if(o instanceof Student){
            Student s2 = (Student) o;
            // 2、判断2个对象的内容是否一样。
//            if(this.name.equals(s2.name) &&
//                 this.age == s2.age && this.sex == s2.sex){
//                return true;
//            }else {
//                return false;
//            }
            return this.name.equals(s2.name) && this.age == s2.age
                    && this.sex == s2.sex ;

        }else {
            // 学生只能和学生比较,否则结果一定是false
            return false;
        }
    }*/

代码调用:

public static void main(String[] args) {
        Student s1 = new Student("沙雕", '男', 19);
        Student s2 = new Student("沙雕", '男', 19);
        // equals默认是比较2个对象的地址是否相同,子类重写后会调用子类重写的来比较内容是否相同。
        System.out.println(s1.equals(s2));
        System.out.println(s1 == s2);

        System.out.println(Objects.equals(s1, s2));
    }

Objects(JDK 1.7开始才有)

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/272127.html

(0)
上一篇 2022年7月8日
下一篇 2022年7月8日

相关推荐

发表回复

登录后才能评论