首页后端开发其他后端知识Java Object类怎样使用,有哪些知识点

Java Object类怎样使用,有哪些知识点

时间2024-03-25 02:00:03发布访客分类其他后端知识浏览928
导读:这篇文章给大家分享的是“Java Object类怎样使用,有哪些知识点”,文中的讲解内容简单清晰,易于理解,而且实用性强吗,对大家认识和了解“Java Object类怎样使用,有哪些知识点”都有一定的帮助,有需要的朋友可以参考了解看看,那么...
这篇文章给大家分享的是“Java Object类怎样使用,有哪些知识点”,文中的讲解内容简单清晰,易于理解,而且实用性强吗,对大家认识和了解“Java Object类怎样使用,有哪些知识点”有一定的帮助,有需要的朋友可以参考了解看看,那么接下来就跟随小编的思路来往下学习吧

       

1.equals方法

==运算符

比较运算符,即可以判断基本类型又可以判断引用类型

如果判断基本类型,则判断值是否相等

如果判断引用类型,则判断地址是否相等,即判断是否为同一个对象

equals

是object类的一个方法,只能判断引用类型

object - equals源码:

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

}

可以清晰的看到,object类里的equals方法是判断对象的地址是否相同(是不是同一个对象)

但是,其他数据类型类会重写equals方法,比如String类的重写:(判断两个字符串的值是否相等)

public boolean equals(Object anObject) {

    if (this == anObject) {
    
        return true;

    }
    
    return (anObject instanceof String aString)
            &
    &
     (!COMPACT_STRINGS || this.coder == aString.coder)
            &
    &
     StringLatin1.equals(value, aString.value);

}
    

实例:

String str1 = new String("hello");
    
String str2 = new String("hello");
    
System.out.println(str1 == str2);
     // false
System.out.println(str1.equals(str2));
     // true

2.hashCode

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

两个引用如果指向同一个对象,哈希值肯定(不冲突的情况下)一样,反之不一样

哈希值根据地址而来但并非地址

演示:

// hashCode
A a = new A();
    
A a1 = new A();
    
A a2 = a;
    
System.out.println(a.hashCode());
    
System.out.println(a1.hashCode());
    
System.out.println(a2.hashCode());

------------------------------

输出:

1324119927
990368553
1324119927

3.toString

返回该对象的字符串表示

源码:

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

}
    

实例:

// toString
A a3 = new A("dahe",25,"安全服务工程师");
    
System.out.println(a3.toString());

输出:

classes.A@41629346
包名.类名@十六进制的hashCode

现在我们在类中重写一下toString方法(模板):

@Override
public String toString() {

    return "A{
" +
            "name='" + name + '\'' +
            ", age=" + age +
            ", job='" + job + '\'' +
            '}
    ';

}

再次运行上面的代码,现在输出如下:

A{
name='dahe', age=25, job='安全服务工程师'}
    

另外,当我们直接输出对象时,会默认直接调用toString方法:

System.out.println(a3);

输出:

A{ name='dahe', age=25, job='安全服务工程师'}

4.finalize

当对象被回收时,系统自动调用该对象的finalize方法,子类可以重写该方法,做一些释放资源的操作

注意:在JDK18中。finalize被弃用了。它虽然可以帮助我们主动释放系统底层资源,但是说实话,没用过,Java 是自动管理内存的,使用它反而会导致潜在的系统安全风险,没帮助不说反而是负担,所以计划移除了。

实例:

// finalize
A a4 = new A("dh",33,"架构师");
    
a4 = null;
 // 这是a4成为了垃圾,垃圾回收器就会回收对象
// 在销毁对象之前,会调用对象的finalize方法
// 程序员就可以在这个方法中写入自己的业务,释放资源

重写finalize方法:

@Override
protected void finalize() throws Throwable {
    
    System.out.println("我们销毁对象");

}
    

除此之外,还可以主动运行垃圾回收器:

System.gc();
     // 主动调用垃圾回收器

以上就是关于Java Object类怎样使用,有哪些知识点的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注网络,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java Object类怎样使用,有哪些知识点
本文地址: https://pptw.com/jishu/652465.html
vue组件scoped作用是什么,使用有什么副作用 Java中怎样实现获取IP归属地的功能?

游客 回复需填写必要信息