今天看了下Object类的源码,以下是我看源码的一些笔记,欢迎有小伙伴来补充~

首先列举下几个主要方法(面试被问到过的):

equals:这个主要是用于比较对象的,Object中比较的是比较原始的,直接进行的是地址的比较,代码如下所示:

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

一般在编写自己的类的时候,都会重写这个方法,不仅比较对象的地址,还会比较对象中具体的值,类库中的String等文件就对这个方法进行了重写。

和hashCode一起使用的,下面在hashCode会具体讲解

finalize;这个是在垃圾回收之前执行的,调用了这个方法不一定执行,但会在垃圾收集器前执行。之后过后,再运行,就不会在执行了,就执行依次。

getClass:这个是获取对象的类,是反射获取类对象的一种方式,通过获取类,可以实现所有的反射功能,获取或者更改类的属性或者方法

hashCode;去标识唯一的对象地址,比如在hashmap集合中,使用它可以获取具体的hash值,然后计算元素在table表中的索引位置

notify;这个是唤醒线程的,当线程处于等待池中时,使用这个方法可以把线程唤醒,从等待状态到等锁状态,获取了锁后就可以运行线程了

notifyall;和上面的方法时相同的,只不过上一个方法是唤醒了一个线程,而这个方法是唤醒所有的线程

toString:这个方法是输出对象的,一般在实例类中,若想输出属性值,需要重写这个方法,否则输出的就是一串十六进制数据

wait:这个方法是表示正在运行的线程调用这个方法后,这个线程会放弃自己拥有的锁,然后进行等待状态,需要被唤醒,才能继续竞争锁资源,才有可能运行

额外关联的内容有:

1.wait和sleep的区别:

wait会放弃锁的资源,等待被notify唤醒,然后才能继续去竞争锁资源,而sleep是休眠,等设定的休眠时间已到,就会重写回到就绪状态,等到获取CPU资源就可以运                   行了,且wait是属于Object类中的方法,sleep是属于Thread类的方法,因为wait需要明确是哪个对象处于等待状态,等到被唤醒时,也需要直到是唤醒哪个对象;对于                     sleep方法而言,就是休眠暂停用的,无论是哪个对象线程调用它,都会暂停一段时间,不需要直到时哪个对象。所以这两个方法处于不同的类中。

2.具体的hashCode和equals的挂关系说明:

以hashmap为例,当对象的hash值一致时,也就表示其hashCode值是一样的,hashCode值一样,就是说对象得出的table下标时一样的,多个需要链表来存储,链表中的数据通过equals

来进行比较,就是当equals值返回为true时,hashCode值一定一样,否则equals就没有比较的意义了。只有先找到下标位置,才有继续比较的意义。若下标不同,equals永远不会想通过。

在重写方法的时候,都会一起把hashCode和equals方法一起重写,比如若把hashCode返回相同的值,则就不能具体区分对象了,会得到这个类实例的对象都是同一个对象。

如equals方法都是同一个值,则没有办法具体区分对象中的值比较,会任务对象中的值都是相同的。

等后续会把代码实例不上

Java中Object类的方法笔记的更多相关文章

  1. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

  2. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  3. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.      String sc_ ...

  4. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  5. Java中Object类的公有方法

    HashCode();wait();notify();equals();getClass();toString();clone();finalize(); 这里只是简单介绍一下其中的几个函数: Has ...

  6. Java中Object类常用的12个方法,你用过几个?

    前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”.Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object ...

  7. JAVA笔记整理(三),JAVA中的类和方法

    类 类是JAVA中一个重要的概念,可以把类理解成一个对象的抽象,这个抽象的对象包含了变量(用来描述这个对象的属性)和方法(用来描述这个对象可以干什么),类中的各个成员之间可以相互调用(static修饰 ...

  8. java中Object类的getClass方法有什么用以及怎么使用?

    Object类的getClass的用法: Object类中有一个getClass方法,m  a  r  k- t  o- w i n:它会返回一个你的对象所对应的一个Class的对象,这个返回来的对象 ...

  9. Java中Integer类的方法

    java.lang 类 Integer java.lang.Object java.lang.Number java.lang.Integer 全部已实现的接口: Serializable, Comp ...

随机推荐

  1. PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)

    题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592 #include <iost ...

  2. JavaScript之事件的绑定与移除

    对于事件的绑定的方法有多种多样,但是在解除绑定事件的时候,就要注意使用的是那种绑定事件的方法,因为不同的绑定方法所对应的解除事件是不同的. 1. 原始写法 1.1 绑定事件:对象.事件=事件处理函数 ...

  3. Android Studio环境安装

    Android Studio下载 http://www.android-studio.org/ JDK下载 https://www.oracle.com/technetwork/java/index. ...

  4. FUTABA 13-ST-84GINK + DS3231 时钟

    收拾东西的时候又看到之前收拾的vfd相关的盒子,偶然又加的群,又买了两种屏试水. 大的买屏还送vfd变压器,这玩意卖的少,一个5块,不买血亏!不知道什么时候开始早已没有DIY是省钱这种观念了.草... ...

  5. word模板导出的几种方式:第三种:标签替换(DocX组件读取与写入Word)

    dll文件下载地址:https://files-cdn.cnblogs.com/files/daizhipeng/DocX.rar DocX wordDocumentOld = DocX.Load(S ...

  6. Android中获得网络状况的实现

    要得知网络状况就是要用networkinfo类这个类名还是把这个类的意思表达的很清晰的,network是网络,info是状况.判断是否有网用到了这个类的IsAvailable方法,这个方法返回的是这个 ...

  7. centos7 安装pgsql

    1.添加prm安装源(或者从官网下载) PostgreSQL官网地址:https://yum.postgresql.org/ yum install https://download.postgres ...

  8. freeswitch reloadxml 出错

    1.修改fs配置文件后,reloadxml控制台上报错误. 2,控制台日志显示 error near line 7301]:missing>] 查询 log 下的 freeswitch.xml. ...

  9. 论文笔记:Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering

    Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering 2019-04-25 21: ...

  10. 渐变UI

    1.h #import <UIKit/UIKit.h> @interface UIView (Gradient) /* The array of CGColorRef objects de ...