JAVA中的object类

一、equals方法

1.==和equals的比较
  • == 既可以判断基本类型有可以判断引用类型
  • ==如果判断基本类型,判断的值是否相等
    int num1 = 10;
    double num2 = 10.0;
    System.out.println(num1 == num2);
  • ==如果判断引用类型,判断的地址是否相等,即判断是不是同一个对象
A a = new A();
A b = a;
A c = b;
System.out.println(a == c);
System.out.println(b == c);
  • equlas:是Object类中的方法,只能判断引用类型
Person person1 = new Person("jack",10,'男');
Person person2 = new Person("jack",10,'男'); System.out.println(person1.equals(person2));

二、hashCode方法

1)提高具有哈希结构的容器的效率!
2)两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!
AA aa1 = new AA();
AA aa3 = aa1;
System.out.println("hashCode=" + aa1.hashCode());
System.out.println("hashCode=" + aa3.hashCode());

3)两个引用,如果指向的是不同对象,则哈希值是不一样的
 AA aa1 = new AA();
 AA aa2 = new AA();
 System.out.println("hashCode=" + aa1.hashCode());
 System.out.println("hashCode=" + aa2.hashCode());

4)哈希值主要根据地址号来的!不能完全将哈希值等价于地址

三、toString方法

子类往往会重写toString方法,用于返回对象的属性信息 如下所示
@Override
    public String toString() {
        return "Monster{" +
                "name='" + name + '\'' +
                ", job='" + job + '\'' +
                ", sal=" + sal +
                '}';
    }

JAVA中的object类_第1张图片 

四、finalize方法

1.当对象被回收时,系统自动调用该对象的finalize方法,
子类可以重写方法,做一些释放资源的操作
2.什么时候被回收:当某个对象没有任何引用时,
则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销售该对象
在销毁该对象前,会先调用finalize方法
3.垃圾回收机制的调用,是由系统来决定,也可以通过System.gc()主动触发垃圾回收机制
public class Finalize_ {
    public static void main(String[] args) {
        Car car = new Car("宝马");
        car = null;
        // 主动调用垃圾回收器
        System.gc();
        System.out.println("程序退出了");
    }
}
class Car{
    private String name;

    public Car(String name) {
        this.name = name;
    }
    // 重写
    @Override
    protected void finalize() throws Throwable {
        System.out.println("我们销毁了" + name);
    }
}

你可能感兴趣的:(#JAVA,java,开发语言)