object类

jdk类库的根类:object类
任何一个类默认继承object,没有直接继承也会有间接继承。
API:应用程序编程接口,整个JDK的类库就是一个javase的API。每个API都会配置一套API帮助文档。sun公司提前写好的类库就是API。
1.object类有哪些常用方法
protected Object clone() //负责对象克隆的
int hashCode() //获取对象哈希值的一个方法
boolean equals(Object obj)//判断两个对象是否相等
String toString() //将对象转换为字符串形式
protected void finalize() //垃圾回收器负责调用的方法

2.toString方法
以后所有类的toString方法都是要重写的
重写规则:越简单明了越好
sout(引用);这里会自动调用"引用"的toString()方法

3.equals方法
所有类的equal方法也要重写,因为ob中的equals方法比较的是内存地址,比较内容的话需要重写

基本数据类型用==
对象与对象用equals

string类是sun编写的,有与string类有关的equals方法已经重写过了
以后判断两个字符串是否相等,最好不要用==,用字符串对象的equals方法

equals方法要重写彻底,每个类都要

实例:

import java.util.Objects;

public class Test05 {
    public static void main(String[] args) {
    User user = new User("zhangsan",new Address("beijing","daxingqu","1111"));
    User user1 = new User("zhangsan",new Address("beijing","daxingqu","1111"));

        System.out.println(user.equals(user1));
    }
}
class User{
    //用户名与用户住址
    String name;
    Address addr;

    public User(String name, Address addr) {
        this.name = name;
        this.addr = addr;
    }
    //重写equals方法,规则:当一个用户名和家庭住址相同时,视为同一个用户
    //这个equals判断的是user与user是否相同,内容
    /*
    public boolean equals(Object object){
        if(object == null || !(object instanceof User)) return false;
        if (this == object) return true;
        if ()
    }
    */
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(name, user.name) &&
                Objects.equals(addr, user.addr);
    }
}
class Address{
    String city;
    String street;
    String zipcode;

    //构造函数
    public Address() {
    }
    public Address(String city, String street, String zipcode) {
        this.city = city;
        this.street = street;
        this.zipcode = zipcode;
    }
    //重写equals方法
    //因为也用了Address类来创建对象,所以这个类也要重写
    //equals要重写彻底
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Address address = (Address) o;
        return Objects.equals(city, address.city) &&
                Objects.equals(street, address.street) &&
                Objects.equals(zipcode, address.zipcode);
    }
}

你可能感兴趣的:(object类)