温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Object类怎么使用

发布时间:2022-07-14 10:00:39 来源:亿速云 阅读:117 作者:iii 栏目:开发技术

这篇文章主要介绍“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类怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI