java中Object类中的toString方法、equals方法、finalize方法、hashcode方法的使用

目录

一、String toString()方法

二、boolean equals(Object obj) 方法

三、protected void finalize()方法

四、int hashCode()方法


一、String toString()方法

1、使用toString()方法都是需要重写的;

例如:System.out.println(); //此方法就是调用了toString()方法,只不过调用的方法已经被重写过了

重写例子:

public class demo1{
    int A;
    //重写toString方法
    public String toString() {
        return "demo1{" + "A=" + A + '}';
    }
}

二、boolean equals(Object obj) 方法

1、equals在Object中的源代码:

 public boolean equals(Object o) {
        return(this==o);
}

2、使用equals方法的目的是比较两个对象是否相等,而用“==”比较对象,只是比较两个对象的内存地址,不能比较值是否相等;所以使用equals方法时也需要重写

例如:

import java.util.Objects;

public class demo1 {
    int a;

    public boolean equals(Object o) {
        if (this == o) return true;  //如果两个对象的地址相等返回true
        if (o == null || getClass() != o.getClass()) return false;//如果对象等于null或者不是同类型对象返回false
        demo1 demo1 = (demo1) o;
        return a == demo1.a;
    }

   
}

注意:重写equals方法时要重写的彻底,

3、“==”和equals的区别:

        “==”用来比较基本数据类型,equals用来比较引用数据类型;

三、protected void finalize()方法

1、finalize()的源代码:

protected void finalize() throws Throwable{
        
    }

2、finalize方法只能jvm中垃圾回收器调用,不需要程序员手动调用;

这段代码相当于是一个时机,当垃圾回收器调用方法的时候可以运行一次方法中的代码,比如输出垃圾回收器启动的时间等等;

例如:

 protected void finalize() throws Throwable{
        System.out.println(this+"已经被回收");
    } //当垃圾回收器调用方法的时候就会输出“****已经被回收”

3、java中垃圾回收器不是有垃圾就会回收,垃圾太少,或者时间没到,有可能启动,也有可能不启动;

例如:

public class demo {
    public static void main(String[] args) {
            p x=new p();
            x=null;    //垃圾太少大概率不会回收
    }
}
class p{
    protected void finalize() throws Throwable{
        System.out.println(this+"已经被回收");
    }

}

public class demo {
    public static void main(String[] args) {

            for(int i=0;i<100000000;i++){ //用循环制造更多的垃圾
                p x=new p();
                x=null;
            }
           //垃圾回收器就会被调用
    }
}
class p{
    protected void finalize() throws Throwable{
        System.out.println(this+"已经被回收");
    }

}

建议垃圾回收的代码 

 p x=new p();
 x=null;
 System.gc();//这段代码是建议垃圾回收
//垃圾回收器有大概率会执行,可能启动, 也可能不启动

四、int hashCode()方法

1、源代码:

 public native int hashCode()

2、方法返回值是哈希码,哈希码就是对象的内存地址经过哈希算法,得到的一个值,

使用例子:

public class demo1  {
    public static void main(String[] args) {
        A a=new A();
        int code=a.hashCode();
        System.out.println(code);//输出1324119927
    }
}
class A{

}


版权声明:本文为qq_39140680原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。