Java面向对象-Object类
java.lang.Object类
* 1.Object类时所有java类的根父类
* 2.如果在类的声明中未使用extends关键字指明父类,则默认父类为java.lang.Object类
* 3.Object类中的功能(属性、方法)就具有通用性。
* 4.Object类只声明了一个空参构造器
*
*
* 5.方法
* equals() toString() getClass() hashCode() clone() finalize()
*
* wait() notify() notifyAll()
*
*
*
* 一、== equals
* ==
* ①可以使用在基本数据类型变量和引用数据类型变量中
* ②如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等,(不一定类型要相同)
* 如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
*
* equals()
* 1.是一个方法,而非运算符
* 2.只能适用于引用数据类型
* ①Object类中equals的定义和==作用相同
* ②像String、Date、File、包装类都重写了equals()方法,重写以后,比较两个对象内容是否相同
*
* 通常情况下,我们自定义类如果使用equals()的话,也通常是比较两个对象的“实体内容”是否相同,那么,
* 我们就要对Object类中的equals()进行重写
*重写规则:比较两个对象实体内容是否相同
*
*
* 二.toString()
toString()
* 1.当我们输出一个对象的引用时,实际上就是调用了当前对象的toString()方法
*
* 2.Object中的toString()
* `public String toString() {
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* }
* 3.像String、Date、File、包装类等都重写了Object类中的toString()方法。
*
* 4.自定义类重写toString()方法
public class ObjectTest { @Test public void test1() { // System.out.println(10==10);//true // // System.out.println(10==10.0);//true // // // String str1=new String("orz"); // String str2=new String("orz"); // System.out.println(str1==str2);//false // // System.out.println(str1.equals(str2));//true Person p1=new Person(1,"tom"); Person p2=new Person(1,"tom"); System.out.println(p1.equals(p2)); } } class Person{ int age; String name; public Person(int age, String name) { this.age = age; this.name = name; } public Person() { } // //手动重写 // @Override // public boolean equals(Object obj) { // if (this == obj) { // return true; // } // if(obj instanceof Person) // { // Person person=(Person)obj; // //比较每个属性是否都相同 // return this.age==person.age &&this.name.equals(person.name); // } // else // { // return false; // } // } //自动生成 @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } }
public class ToStringTest { public static void main(String[] args) { Customer customer=new Customer(); customer.age=11; customer.name="Tom"; System.out.println(customer); } } class Customer{ int age; String name; //自动生成toString() @Override public String toString() { return "Customer{" + "age=" + age + ", name='" + name + '\'' + '}'; } }