(JAVA):Object类的常见方法记录,遇见了要知道。

导读:本篇文章讲解 (JAVA):Object类的常见方法记录,遇见了要知道。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

言图:

1、“==” 和 equals的对比

2、 hashCode()方法

3、toString()方法

4、finalize()方法 


言图:

(JAVA):Object类的常见方法记录,遇见了要知道。


 

1、“==” 和 equals的对比

“==” 是一个比较运算符:

        1、==:既可以判断基本类型,也可以判断引用类型。

        2、==:如果判断基本类型,判断的是值是否相等。示例:int i = 10,double d = 10.0;

        3、==:如果判断引用类型,则判断的是地址是否相等,即判定是不是同一个对象。

equals方法:

        1、equals 是object 类中的方法,只能用于判断引用类型。

        2、默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。

代码示例:

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

        A a = new A();
        A b = a;
        A c = b;

        System.out.println(c == a);//true
        System.out.println(b == a);//true

        B bobj = a;
        System.out.println(bobj == c);//true

        System.out.println("skfdf".equals("fjsk"));//false
    }
}

class B{}

class A extends B{}

2、 hashCode()方法

语法:

        object.hashCode()

功能:

                返回该对象的哈希码值。(支持此方法是为了提高哈希表的性能)

说明:

        实际上,由object类定义的hashCode方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是Java编程语言不需要这种实现技巧)

代码示例:

Object obj1 = new Object();

System.out.println(obj1.hashCode());

小结:

        1、提高具有哈希结构的容器的效率。

        2、两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!反之,指向不同的                  对象,则哈希值不同。

        3、哈希值主要是根据地址号来的!但是不能将哈希值等价于地址。

        4、在集合中,hashCode 如果需要的话,也会重写。


3、toString()方法

语法:

        String toString()

返回值:

        默认返回:全类名+@+哈希值的十六进制

代码示例:

public String toString(){

    ruturn getClass().getName() + "@" + Integer.toHexString(hashCode());

}

小结:

        1、子类往往重写toString方法,用于返回对象的属性信息。

        2、重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式。

        3、当直接输出一个对象时,toString方法会被默认调用。

4、finalize()方法 

语法:

        protected void finalize()

说明:

1、当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法。

2、什么时候被回收:当某个对象没有任何引用的时候,则JVM就默认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,就会先调用finalize方法

3、垃圾回收机制的调用,是由系统来决定的,也可以通过System.gc()  主动触发垃圾回收机制。

代码示例:

public class equalo1 {
    public static void main(String[] args) {
        
        Car bmw = new Car("宝马");

        //这时car对象就是一个垃圾,垃圾回收器就会回收(销毁)对象,在销毁之前,会调用该对象的finalize方法
        //程序员就可以在 finalize中,写自己的业务逻辑代码(比如释放资源:数据库链接,或者打开文件)
        //如果程序员不重写finalize,那么就会调用object类的finalize,即默认处理
        //如果程序员重写了finalize,就可以实现自己的逻辑

        bmw = null;
    }
}
class Car{
    private String name;

    public Car(String name){
        this.name = name;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119700.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!