JDK8(一)Object

源码版本:JDK8

java.lang.Object

注释

/*
 * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

这段就不用说了,只提一次,Oracle的版权,进入正文

/**
 * Class {@code Object} is the root of the class hierarchy.
 * Every class has {@code Object} as a superclass. All objects,
 * including arrays, implement the methods of this class.
 *
 * @author  unascribed
 * @see     java.lang.Class
 * @since   JDK1.0
 */

Object类是所有类的父类,就像祖师爷,所有的对象包括数组都实现这个类的方法,也因为所有类都默认继承Object,所以省略了extends Object关键字

registerNatives()

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

主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。函数的执行是在静态代码块中执行的,在类首次进行加载的时候执行。

getClass()

public final native Class<?> getClass();

返回此Object的运行时类。返回的类对象是被表示类的static synchronized方法锁定的对象。

实际结果的类型是Class<? extends |X|>其中|X|是静态类型上其表达的擦除getClass被调用。

例如,在此代码片段中不需要转换:

Number n = 0;
Class<? extends Number> c = n.getClass();

结果
表示类对象的运行时类的Class对象。

hashCode()

public native int hashCode();

返回对象的哈希码值。

支持这种方法是为了散列表,如HashMap提供的那样。

hashCode的总合同是:

只要在执行Java应用程序时多次在同一个对象上调用该方法,hashCode方法必须始终返回相同的整数,前提是修改了对象中equals比较中的信息。

该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。

如果根据equals(Object)方法两个对象相等,则在两个对象中的每个对象上调用hashCode方法必须产生相同的整数结果。

不要求如果两个对象根据equals(java.lang.Object)方法不相等,那么在两个对象中的每个对象上调用hashCode方法必须产生不同的整数结果。

但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。
尽可能多的合理实用,由类别Object定义的hashCode方法确实为不同对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java的编程语言不需要此实现技术。)

equals(Object obj)

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

clone()

protected native Object clone() throws CloneNotSupportedException;

toString()

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

notify()

public final native void notify();

notifyAll()

public final native void notifyAll();

wait(long timeout)

public final native void wait(long timeout) throws InterruptedException;

wait(long timeout, int nanos)

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()

public final void wait() throws InterruptedException {
    wait(0);
}

finalize()

protected void finalize() throws Throwable { }
(0)

相关推荐

  • JAVA中equals的用法

    Object类中的equals方法用于检测一个对象是否等于另一个对象.在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认 ...

  • 所有类的父类 Java Object

    Java Object 一.什么是Java Object 二.Object类的方法 1.创建并返回一个对象的拷贝protected Object clone() 2.比较两个对象是否相等 boolea ...

  • 面试官:Object有些什么方法?教你如何吊打他

    回复"000"获取大量电子书 从学Java开始,天天念叨着Object是所有类的父类,说Java是单继承,是单继承的吗? 大家所说的单继承应该是除去Object继承以外的单继承吧. ...

  • C# LINQ学习笔记三:LINQ to OBJECT之操作字符串

    一.统计单词在字符串中出现的次数 请注意,若要执行计数,请先调用Split方法来创建词数组.Split方法存在性能开销,如果对字符串执行的唯一操作是计数词,则应考虑改用Matches或 IndexOf ...

  • Real-Time Object Tracker In C++

    Download demo - 127 KBDownload source - 84.3 KB Contents Introduction Background Using the code The ...

  • C4D创建玻璃抽象小球Creating an Abstract Glass Object

    --  微资讯 · 微课程  -- 利用零碎时间,走上超神之路! 使用软件: Cinema4D 教程质量:6颗星 教程难度:2颗星 课程总结: 第一部分,建模部分:主要使用了删除面,挤出,合并,点缝合 ...

  • 如何重写object虚方法

    在 C# 中 Object 是所有类的基类,所有的结构和类都直接或间接的派生自它.前面这段话可以说所有的 C# 开发人员都知道,但是我相信其中有一部分程序员并不清楚甚至不知道我们常用的 ToStrin ...

  • 【C#】Newtonsoft.Json 中 JArray 添加数组报错:Could not determine JSON object type for type 'xxx'

    有时我们临时需要一个 JSON 字符串,直接拼接肯定不是好方法,但又懒得去定义一个类,这是用 JObject 就会非常的方便. 但是在 JObject 中添加数组却经常被坑. List<stri ...

  • 对象 JSON Map List Object JSONObject JSONArray 互相转换

    对象 JSON Map List Object JSONObject JSONArray 互相转换 创建个实体类 maven JSON字符串 转 对象 JSON字符串 转 Map JSON字符串 转 ...

  • 泛型与普通方法、Object方法效率比较

    泛型与普通方法.Object方法效率比较 简介: 方法的执行效率比较,首先考虑的就是执行方法时所耗费的时长,时长越短,效率越好,耗时越长,效率越差.下面就从执行耗时方法考量三种方法的效率. 实现方法: ...

  • SAP Cloud for Customer UI Designer里如何消费Object Value Selector(OVS)

    先看最后实现的效果: 我有一个字段,用户既手动输入Employee ID,也可以点击字段的矩形框,打开Value help: 假设我选中ID为1的Employee,则其first name和last ...

  • 28 Object类

    28 Object类 含义 任何类的直接父类或间接父类 常用操作(被子类重写的方法) 1.toString方法 对于引用数据类型,打印变量名的时候自动调用toString方法,默认打印的是地址, pu ...