Object类
Object()构造方法,构造一个对象,所有子类对象初始化都会优先调用该方法
Java.base->java.lang->Object->hashCode(),getClass(),toString(),equals()
Class<?>getClass():返回调用此方法的运行时类对象,该类的字节码文件
String toString():返回该对象的字符串表示
package com.wang.object; public class Demo01 { public static void main(String[] args) { //非静态方法的调用方式,通过对象名.的形式调用 Object o1=new Object(); Object o2=new Object(); //测试Object类中的成员方法 int code1=o1.hashCode();//不同对象的哈希码值一般不同,哈希码值就是根据地址值计算出来的数字 int code2=o2.hashCode(); System.out.println(code1); System.out.println(code2); System.out.println("==================================="); Class class1=o1.getClass();//字节码文件 一个类的字节码文件一样 Class class2=o2.getClass(); System.out.println(class1); System.out.println(class2); System.out.println("==================================="); String s1=o1.toString(); String s2=o2.toString(); //打印的是地址值。不同对象的地址值不同 //地址值的组成:全类名(包名+类名)+@+该对象的哈希码的无符号十六进制 System.out.println(s1); System.out.println(s2); System.out.println("========================================"); //比较两对象是否相等,默认比较的是地址值,无意义,因为不同对象的地址值一定不一样。子类一般都会重写这个方法 boolean b1=o1.equals(o2); System.out.println(b1); } }
步骤:
①定义标准JavaBean类Student,属性id、name、score
②重写toString():该对象的字符串表现形式,一般都是包含所有属性值且具有一定的格式的字符串
③重写equals():通过关键属性id来确定该类的两个对象是否相同,可以比较所有属性值
package com.wang.object; public class Demo02 { public static void main(String[] args) { //测试toString Student s1=new Student("001","王迎婧",100); //输出语句直接打印对象,默认调用了该对象的toString方法 //重写toString方法后测试 System.out.println(s1); System.out.println(s1.toString()); //测试equals方法 Student s2=new Student("002","往往",99); System.out.println(s1.equals(s2)); } } class Student{ private String id; private String name; private int score; public void setId(String id) { this.id = id; } public String getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setScore(int score) { this.score = score; } public int getScore() { return score; } public Student(){} public Student(String id,String name,int score){ this.id=id; this.name=name; this.score=score; } @Override public String toString() { return "Student{id="+id+", name='"+name+"', score="+score+"}"; } /* @Override public boolean equals(Object obj) { //向下转型 Student s2=(Student)obj; //在实际开发中会比较对象的每一个属性,不会仅仅比较id return this.id==s2.id; } */ //自动生成的步骤 右键-generate-equals和hashCode @Override public boolean equals(Object o) { //this:s1 o:s2 //比较两个对象的地址值是否相同 if (this == o) return true; //判断要比较的两个对象是否是同一个类型的对象 if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return score == student.score && id.equals(student.id) && name.equals(student.name); } @Override public int hashCode() { return Objects.hash(id, name, score); } }