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 + '\'' +
                '}';
    }
}

 

posted @ 2020-08-07 23:08  orz江小鱼  阅读(82)  评论(0编辑  收藏  举报