Object 类

equals 方法、==

1、equals 方法

(1)Object 类的方法,底层是比较操作符 ==

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

(2)默认判断引用地址是否相等,即判断引用的是否为同一对象

(3)子类往往重写该方法,用于判断内容是否相等

Integer 类

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}

String 类

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

2、==

(1)比较运算符

(2)基本类型:判断值是否相等

(3)引用类型:判断引用地址是否相等,即判断引用的是否为同一对象

 

hashCode 方法

public int hashCode()

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

2、若两个引用指向同一对象,哈希值一定相同;若两个引用指向不同对象,哈希值不同,但可能存在哈希碰撞

3、哈希值由真实地址转换而来,但哈希值不能等价于地址

4、在集合中,若有需要,hashCode 方法会被重写

 

toString 方法

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

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

(1)得到类的全类名(包名 + 类名)

getClass().getName()

(2)获取对象的哈希值,并将其转换为十六进制的字符串

Integer.toHexString(hashCode())

2、直接输出一个对象时,toString 方法会被隐式默认调用

3、子类往往重写该方法,以字符串形式返回对象属性

 

finalize 方法

1、当对象被回收,系统自动调用该对象的 finalize 方法

2、当某个对象无任何引用时,JVM 使用垃圾回收机制来销毁该对象,在销毁对象前,会先调用 fainalize 方法

3、系统有自己的 GC 算法,决定垃圾回收机制的调用时机,一般可以通过 System.gc() 主动触发垃圾回收机制,调用后不一定立刻执行

4、子类可以重写该方法,做释放资源的操作

5、开发中不常用

 

getClass 方法

public final Class<?> getClass()

1、返回此对象的运行时类的 Class 对象

2、返回的 Class 对象是被表示类的 static synchronized 方法锁定的对象

posted @   半条咸鱼  阅读(28)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示