栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java零基础入门 12:Java中的Object类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java零基础入门 12:Java中的Object类

 周周有福利,周周有惊喜 哪吒社区 - 风火轮计划

 Java学习路线配套文章:Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

 Java经典面试题大全:10万字208道Java经典面试题总结(附答案)

 简介:Java领域优质创作者、CSDN哪吒公众号作者✌ 、Java架构师奋斗者
 扫描主页左侧二维码,加入群聊,一起学习、一起进步
 欢迎点赞  收藏 ⭐留言 

目录
    • 一、Object类简介
    • 二、Object提供了11种方法
      • 1、clone()
      • 2、getClass()
      • 3、toString()
      • 4、finalize()
      • 5、equals()
      • 6、hashCode()
      • 7、wait()
      • 8、notify()
      • 9、notifyAll()

一、Object类简介

Object类是Javajava.lang包下的核心类,Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类;
Java中所有的类默认继承Object类。

package com.guor.es.test;

public class Student {
    private Integer id;
    private String name;
}

package com.guor.es.test;

public class Student extends Object{
    private Integer id;
    private String name;
}

二者的效果是一样的。

二、Object提供了11种方法 1、clone()
protected native Object clone() throws CloneNotSupportedException;

实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

2、getClass()
public final native Class getClass();

final方法,返回Class类型的对象,反射来获取对象。

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

通过转为字符串,获取对象信息。
Object是最常见的Object方法。

package com.guor.es.test;

public class Student extends Object{
    private Integer id;
    private String name;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + ''' +
                '}';
    }
}

4、finalize()
protected void finalize() throws Throwable { }

该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

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

判断内容是否相等,注意,这里比较的不是内存地址。
java语言规范要求equals方法具有下面的特性:

  • 自反性:对于任何非空引用x,x.equals(x)应该返回true;
  • 对称性:对于任何引用x,和y,当且仅当,y.equals(x)返回true,x.equals(y)也应该返回true;
  • 传递性:对于任何引用x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true;
  • 一致性:如果x,y引用的对象没有发生变化,反复调用x.equals(y)应该返回同样的结果;
  • 对于任意非空引用x,x.equals(null)返回false;
6、hashCode()
public native int hashCode();

该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
Java中Object有一个方法:

public native int hashcode();

(1)hashcode()方法的作用

hashcode()方法主要配合基于散列的集合一起使用,比如HashSet、HashMap、HashTable。

当集合需要添加新的对象时,先调用这个对象的hashcode()方法,得到对应的hashcode值,实际上hashmap中会有一个table保存已经存进去的对象的hashcode值,如果table中没有改hashcode值,则直接存入,如果有,就调用equals方法与新元素进行比较,相同就不存了,不同就存入。

(2)equals和hashcode的关系

如果equals为true,hashcode一定相等;

如果equals为false,hashcode不一定不相等;

如果hashcode值相等,equals不一定相等;

如果hashcode值不等,equals一定不等;

(3)重写equals方法时,一定要重写hashcode方法

7、wait()
public final native void wait(long timeout) throws InterruptedException;
public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }

        if (nanos > 0) {
            timeout++;
        }

        wait(timeout);
    }

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

  • 其他线程调用了该对象的notify方法。
  • 其他线程调用了该对象的notifyAll方法。
  • 其他线程调用了interrupt中断该线程。
  • 时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

8、notify()
public final native void notify();

该方法唤醒在该对象上等待的某个线程。

9、notifyAll()
public final native void notifyAll();

该方法唤醒在该对象上等待的所有线程。

上一篇:Java零基础入门 11:Java继承

下一篇:敬请期待

添加微信,备注1024,赠送Java学习路线思维导图
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号