JavaSE_Object类

任何一个类默认继承Object。就算没有直接继承,最终也会间接继承。

一、API:

应用程序编程接口。(Application Program Interface)
整个JDK的类库就是一个javase的API。
每一个API都会配置一套API帮助文档。

二、toString()方法

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
  • 类的toString()方法是需要重写
  • 重写规则:简单、明了
  • System.out.println(引用变量名); 这里会自动调用“引用”的toString()方法。
    • String类是SUN写的,toString方法已经重写了。
//String类的toString()方法
    public String toString() {
        return this;
    }

三、equals()方法

public boolean equals(Object obj) {
        return (this == obj);
    }
  • 类的equals方法需要重写,因为Object中的equals方法比较的是两个对象的内存地址,应该根据自己的规则比较,所以需要重写。
  • 重写规则:根据对象的成员来定
  • 注意:重写equals方法的时候要彻底。
基本数据类型比较对象和对象比较
==调用equals方法
  • String类是SUN编写的,String类的equals方法重写了。
  • 以后判断两个字符串是否相等,最好不要使用==,要调用字符串对象的equals方法。
//String类的equals()方法
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;
    }

四、finalize()方法

protected void finalize() throws Throwable { }
  • 当垃圾收集确定没有对对象的引用时,由对象上的垃圾收集器调用。子类重写 finalize方法配置系统资源或执行其他清理。
  • 对象被清理前:对象“遗嘱”
  • 对比:static{ }:类加载就加载
  • finalize()方法的使用

五、hashCode()方法

public native int hashCode();
  • 返回一个对象的哈希代码值。

  • 由类Object定义的 hashCode方法 返回不同的对象不同的整数。(这通常是通过将该对象的内部地址转换成一个整数

  • 如果根据equals(Object)方法两个对象是相等的,那么调用hashCode方法这两个对象必须产生相同的整数结果。 这说明了对象的 “==” 是比较相同的地址

  • hashcode详解

六、静态代码块

private static native void registerNatives();
static {
   registerNatives();
}

七、getClass()方法

public final native Class<?> getClass();
  • 返回该 Object运行时类。
  • getClass()方法是获得调用该方法的对象的类;getClass().getName()可以得到该类的路径;
  • 通过getClass()方法得到该对象类Class后,可以通过Class获取这个类中的相关属性和方法;
  • java中getClass()方法简介

八、clone()方法

    protected native Object clone() throws CloneNotSupportedException;

九、关于线程的方法

    //唤醒在此对象监视器上等待的单个线程
    public final native void notify();

    //唤醒在此对象监视器上等待的所有线程
    public final native void notifyAll();

    //线程从处于等待状态,直到其他线程调用此对象的notify() 方法和notifyAll() 方法,或者超过指定的时间量。时间精度是毫秒级。
    public final native void wait(long timeout) throws InterruptedException;
    
    //使当前线程等待-->另一个线程调用此对象的方法或 notify() notifyAll()方法,或者其他某个线程中断当前线程,或一定量的实际时间已经过去了。  
    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);
    }

    //线程从处于等待状态,直到其他线程调用此对象的notify() 方法和notifyAll() 方法。
    public final void wait() throws InterruptedException {
        wait(0);
    }

十、native关键字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值