总结
豆包 AI 助手文章总结
首页 > Java > java教程 > 正文

Java Object类怎么使用

WBOY
发布: 2023-05-13 17:13:14
转载
1733人浏览过

    1.equals方法

    ==运算符

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

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

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

    equals

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

    object - equals源码:

    立即学习Java免费学习笔记(深入)”;

    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());
    ------------------------------
    登录后复制

    输出:

    13241199279903685531324119927

    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类怎么使用的详细内容,更多请关注php中文网其它相关文章!

    java速学教程(入门到精通)
    java速学教程(入门到精通)

    java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    豆包 AI 助手文章总结
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号