今天看了下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. 使用第三方jar时出现的问题

    Eclipse下把jar包放到工程lib下和通过buildpath加载有什么不同(解决找不到类的中级方法) 我通过Eclipse的 User Libranry 将jar导入 Eclipse里面,编译没 ...

  2. IP通信基础的第一个星期

    IP通信基础不仅是很多专业课程的基础,同时学好它,在以后很多工作上都可以运用到,有网络工程师.通信工程师等等,当然,有些证书也会涉及到IP通信基础,有网络中级高级 CCNA等等. 那么,学好IP通信基 ...

  3. bui前端框架+yii整理

    这个是做bui前端样式整合的时候记录的. 首先当然是要下载一个yii的源码,搭建起来. 第一步将bui的样式迁移到yii的样式目录中去 这里我在样式外面加了一个bui的文件夹,表示这个文件夹中存放的是 ...

  4. ionic 实现 应用内(webview中html页面点击) 和 应用外 (浏览器html页面点击) 打开本地安装应用

    应用内(webview中html页面点击) : 应用内打开本地安装应用指的是webview里打开应用,需要2个步骤: 1: 需要下载一个cordova插件:com.lampa.startapp ,也可 ...

  5. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0

    转自https://blog.csdn.net/lovesomnus/article/details/49512777 在maven中央库中查找ojdbc,发现最新的版本是10.2.0.4.0,然后在 ...

  6. python 字典操作提取key,value

    python 字典操作提取key,value dictionaryName[key] = value 1.为字典增加一项  2.访问字典中的值  3.删除字典中的一项  4.遍历字典  5.字典遍历的 ...

  7. 小程序使用阿里巴巴TTF字体文件以及图标

    转话地址https://transfonter.org 第一步:下载需要的字体图标 进入阿里图标官网http://iconfont.cn/搜索自己想要的图标,如这里需要一个购物车的图标,流程为: 搜索 ...

  8. P3958 奶酪

    传送门 思路: 模拟题.用并查集求出所有 “连通块” ,判断是否有 “连通块” 的最顶上和最下方都不小于奶酪的范围. Code: #include<iostream> #include&l ...

  9. P3953 逛公园

    传送门 花了一个下午才 A 的毒瘤题 思路: 这题需要建两个图,一个正向图,一个反向图. 先在正向图上跑一遍 dijkstar ,计算出每个点到 点1 的最短路径 . 然后在反向图上开始记忆化搜索: ...

  10. font-spider-plus,字体压缩插件使用笔记

    font-spider-plus使用笔记, fsp是一个腾讯的大佬改版后的font-soider 主要思路是 采集线上网页使用到的字体,从字体文件中分离出来,完成大幅度压缩, 1,npm i font ...