/* Object为所有类的父类 public String toString() 返回该对象的字符串表示 / toString 为 Object类中的方法 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } getClass().getName() : 全类名(包名加类名) Integer.toHexString() : 转十六进制 hashCode() : 返回对象内存地址 + 哈希算法 算出的整数 (哈希值) -------------------------------------------- 细节:使用打印语句,打印对象名时,println方法在语法层面会自动调用对象的toString方法 public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } */ public class ToStringDemo { public static void main(String[] args) { A a = new A(); System.out.println(a); //object_demo01.A@3b07d329 System.out.println(a.toString()); //object_demo01.A@3b07d329 Student s = new Student(); System.out.println(s.toString()); } } class A { } class Student { String name; int age; double grade; @Override public String toString() { //toString用法:通过重写输出信息 return "Student{" + "name='" + name + '\'' + ", age=" + age + ", grade=" + grade + '}'; } } 输出如下: object_demo01.A@3b07d329 object_demo01.A@3b07d329 Student{name='null', age=0, grade=0.0}
import java.util.Objects; /* Object类中的Equals方法: public boolean equals(Object object) : 对象之间进行比较,返回true或者false public boolean equals(Object obj) { //this : s1 //obj : s2 return (this == obj); } 结论:Object类中的equals方法,默认比较的是对象内存地址 -通常会重写equals方法,让对象之间比较内容 区分:String类的equals方法默认比较两个字符串的内容(由于相同内容的String对象只会存在一份) */ public class EqualsDemo { public static void main(String[] args) { Student s1 = new Student("张三", 18); Student s2 = new Student("张三", 18); System.out.println(s1 == s2); //false, 基本数据类型内容使用 == 比较,才会返回true System.out.println(s1.equals(s2)); //true (因重写equals方法,所以比较对象内容) /* Objects类为Object的子类,常用方法有equals和isNull public static boolean equals(Object a, Object b) -比较两个对象。底层会先进行非空判断以避免空指针异常。在进行equals比较。 -注意: 该方法也依赖于类中重写的equals方法。 -好处: 可以避免空指针异常 public static boolean isNull(Object obj) -判断变量是否为空。 */ System.out.println(Objects.equals(s1, s2)); } } class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } public Student() { } @Override public boolean equals(Object obj) { // this : s1 // obj : s2 if (obj instanceof Student) { //测试对象obj是否是Student类的实例 Student stu = (Student) obj; return this.age == stu.age && this.name.equals(stu.name); } else { return false; } } } 输出如下: false true true