一、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方法,用于返回对象的属性信息 如下所示
@Overridepublic String toString() {return "Monster{" +"name='" + name + '\'' +", job='" + job + '\'' +", sal=" + sal +'}';}
四、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;}// 重写@Overrideprotected void finalize() throws Throwable {System.out.println("我们销毁了" + name);}
}