Fork me on GitHub

【JAVA笔记】JAVA中的常用工具API简介、Object类的特点、JavaBean类重写Object类中的方法06

一、Java常用工具API简介

 

 

 根据步骤查找API文档使用对应功能

API网址:https://www.apiref.com/java11-zh/index.html

什么是API?

二、Object类的特点

1.java.lang包下的类可以直接使用,不需要导包
2.一个类只有一个字节码文件
3.toString返回该对象的字符串表示形式,默认打印的是地址值,但是不同对象的地址值肯定不同。
4.地址值的组成:全类名+@+该对象的哈希码的无符号十六进制形式

 实例:

package cn.test02.demo3;

public class Demo {
    public static void main(String[] args) {
        //非静态方法的调用方式:通过对象名.的形式调用
        //1.创建Object对象
        //int hashCode();
        Object obj1 = new Object();
        Object obj2 = new Object();

        //2、调用Object对象方法
        int code1 = obj1.hashCode();
        int code2 = obj2.hashCode();
        System.out.println("obj1的hashCode值:" + code1);
        System.out.println("obj2的hashCode值:" + code2);
        System.out.println("---------------------------------------");

        //Class<?>getClass():返回该调用者的字节码文件对象
        Class clazz1 = obj1.getClass();
        Class clazz2 = obj2.getClass();
        System.out.println(clazz1);
        System.out.println(clazz2);

        //String toString();
        String s1 = obj1.toString();
        String s2 = obj2.toString();
        System.out.println(s1);
        System.out.println(s2);
        
        //boolean equals(); 比较两个对象是否相同,默认比较的是地址,无意义,子类一般都会重写这个方法
        boolean b1 = obj1.equals(obj2);
        System.out.println(b1);

    }
}

运行结果:

三、JavaBean类重写Object类中的方法

我们时常要用到object类,但是他本身的toString方法和equals方法并不是我们所需要的话,这时候就要用到JavaBean类来重写Object类中的方法:
这里在java的编译工具idea里面十分容易,只要alt加insert或者鼠标右键,然后选中Generate,然后在里面寻找你要重写的方法名即可,接下来将给出Student类重写Object奇中类并在Test类中测试的代码:
首先是Student类的代码
实例:

Student.java

package cn.test02.demo4;

public class Student {
    private int id;
    private String name;
    private int score;

    public Student() {

    }

    //    构造方法
    public Student(int id, String name, int score) {
        this.id = id;
        this.name = name;
        this.score = score;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';

    }

    //    通过快捷键(右键-Generate)的方式重写equals
    @Override
    public boolean equals(Object o) {
        //this表示s1 o在这里表示传进来的s2
        //比较两个对象的地址值是否相同 若相同说明是一个对象不需要再比较了  提高效率
        if (this == o)
            return true;
        //判断要比较的两个对象是否是同一类型的 比如你不能拿学生和护士比较 提高了代码的健壮性
        if (o == null || this.getClass() != o.getClass())
            return false;
        //向下转型,使父类可以用子类德 相关属性
        Student student = (Student) o;
        return id == student.id && score == student.score &&
                //这里调用的是String里面自带的equals方法
                name.equals(student.name);
    }


}

接下来是Test.java

package cn.test02.demo4;

public class Test {
    public static void main(String[] args) {
        //测试toString方法
        Student student1 = new Student(1, "s1", 66);
        System.out.println(student1);
        //输出语句直接打印对象,相当于调用了对象的toString方法
        System.out.println(student1.toString());
        Student student2 = new Student(2, "s1", 66);
        boolean a = student1.equals(student2);
        System.out.println(a);

    }
}

id值不一致,很容易看出是false

 

  

 

  

 

posted @ 2022-12-12 23:20  橘子偏爱橙子  阅读(32)  评论(0编辑  收藏  举报