hashCode的作用
- 提高具有hash结构的容器效率
- 两个引用,如果指向同一个对象,则哈希值肯定是一样的
- 两个引用,如果指向的不是同一个对象,则哈希值是不一样的
- 哈希值是根据地址号来的,不能完全将哈希值等价于地址
package hashCode;
/**
* @author L葵乄阳S
* @version 1.0
* @description: TODO
* @date 2023/5/30 18:24
* @PROJECT_NAME Java
* @NAME HashCode.java
*/
public class HashCode {
public static void main(String[] args) {
A a = new A();
A a1 =new A();
A a2 = a;
System.out.println("a.hashCode的值:"+a.hashCode());
System.out.println("a1.hashCode的值:"+a1.hashCode());
System.out.println("a2.hashCode的值:"+a2.hashCode());
}
}
class A{
}
运行结果:
finallize方法
- 当对象被回收时,系统自动调用对象的finalize方法。子类可以重写该方法,做一些释放资源的操作。
- 什么时候被回收: 当某个对象没有任何引用时,则jvm就认为这个对象时一个垃圾对象,就会使用垃圾回收机制来销毁对象,在销毁对象前,回先调用finalize方法。
- 垃圾回收机制的调用,是由系统来决定,也可以通过System.gc()主动触发垃圾回收机制,测试:Car[name].
package finalize;
/**
* @author L葵乄阳S
* @version 1.0
* @description: TODO
* @date 2023/5/30 18:44
* @PROJECT_NAME Java
* @NAME Finalize.java
*/
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);
}
}
运行结果: