标签:sys 其它 str 子类初始化 getname 实现 初始化 strong lse
简介
类层次结构最顶层的基类,所有类都直接或间接继承自Object类,所以,所有的类都是以恶个Object(对象)
构造方法
Object:
构造一个对象,所有子类初始化时都会优先调用该方法
常用的成员方法
栗子:
package dome6; public class Test { public static void main(String[] args) { //非静态方法的调用方式:通过 对象名 . 的形式调用 Object obj = new Object(); //创建Object对象 Object obj1 = new Object(); // int hashCode(): 返回调用者的字节码文件对象,不同对象的哈希码值一般不同 int a = obj.hashCode(); System.out.println(a); // Class<?> getClass():返回该调用者的字节码文件对象,一个类只有一个字节码文件 Class b = obj.getClass(); Class e = obj1.getClass(); System.out.println(b); System.out.println(e); //String toString(): 返回该对象的字符串表示形式,默认打印的是地址值,但是不同的对象地址值肯定不同 // 地址值的组成:全类名(包+类) + @ + 通过对象的哈希码的无符号十六进制形式 String c = obj.toString(); String p = obj1.toString(); System.out.println(c); System.out.println(p); //boolenan equals() 比较两个对象是否相等,默认比较的是地址值,无意义,子类一般都会重写这个方法 Boolean d = obj.equals(obj1); System.out.println(d); } } class a{ } class b{ }
输出结果:
460141958 class java.lang.Object class java.lang.Object java.lang.Object@1b6d3586 java.lang.Object@4554617c false
重写Object类的方法
需求:开发中通常需要将对象转换成字符串形式就行传输,也需要对即将使用的对象进行相等判断。定义标准javaBean类,重
写toString和equals方法。
步骤:
定义java Bean类Student,属性:id,name,score
重写toString():
该对象的字符串表现形式,一般都是包含所有属性值且具有一定格式的字符串
重写equals():
代码:
package dome6; import java.util.Objects; public class Student { public static void main(String[] args) { //测试toSting()方法 Stu stu = new Stu(19,"亚索",23); //输出语句直接打印对象,默认调用了该对象的toSting()方法,因为所有的类都继承自Object System.out.println(stu); //测试equals Stu stu1=new Stu(19,"压缩",23); System.out.println(stu.equals(stu1)); } } class Stu{ //私有变量 private int id; private String name; private int score; //构造方法 public Stu(){}; public Stu(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; } //重写方法 //重写toString() @Override public String toString() { return "Stu{" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ", score=‘" + score + ‘\‘‘ + ‘}‘; } //重写equals():用来比较两个对象是否相同 //自定义版的重写equals()方法 //假设id属性值相同,两个对象就是同一个对象 //注意 在实际开发中,我们把两个对象的哥哥属性值都相同的情况下,才会认为这两个对象是同一个对象 // @Override // public boolean equals(Object obj){ // /* // this:谁调用,this就表示谁 // obj:对象 // */ // //向下转型 // Stu s2 = (Stu)obj; // //比较id是否相同 // return this.id == s2.id; // } //通过快捷键实现 alt+insert @Override public boolean equals(Object o) { //this:stu o:stu1 // 比较两个对象的地址值,提高效率 //如果if语句控制的语句体只有一行代码,则不需要大括号 if (this == o) return true; //判断要比较的两个对象是否是同一个类型的对象 //程序默认 this.getClass() if (o == null || getClass() != o.getClass()) return false; //向下转型,正常的逻辑代码 Stu stu = (Stu) o; return id == stu.id && score == stu.score && Objects.equals(name, stu.name); //name属于String,属于引用型变量,所以有equals()方法 } }
标签:sys 其它 str 子类初始化 getname 实现 初始化 strong lse
原文地址:https://www.cnblogs.com/zxy6/p/14243046.html