今天看了下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. JavaScript之事件的绑定与移除

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

  2. linux 定时任务,压缩 日志,并删除掉 指定日期之前的 日志

    sh文件 #!/bin/sh myPath="/var/www/Client/storage/logs/" myFile="lumen.log" cd $myP ...

  3. Docker 运维高级应用管理

     Docker 基本应用 1.Docker 介绍及安装 2.Docket 使用命令 3.Docker run命令参数整理 4.Docker 构建镜像 Docker Compose 高级应用 1.Doc ...

  4. 用户和用户组y哦不过y哦那个好

    一.用户和用户组的简介? 介绍:https://blog.csdn.net/Na2Co3_Ren/article/details/74502309 二.用户可以分为3类? 1.主人:所有者的名字 2. ...

  5. Laravel5.5学习笔记

    安装composer 下载安装脚本 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php ...

  6. xftp5和xshell的使用

    目的:实现windows和linux系统之间文件的传输 步骤:1)下载xshell5 百度搜索即可,直接下载安装 2)xshell5下载完成后与虚拟机链接成功 3)下载xftp5点击 然后跟据官方的指 ...

  7. windows 10, v1903 正式版下载

    一.简体中文版 cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.iso         sha1:bc6176bee6130 ...

  8. mybatis-ehcache整合中出现的异常 ibatis处理器异常(executor.ExecutorException)解决方法

    今天学习mabatis时出现了,ibatis处理器处理器异常,显示原因是Executor was closed.则很有可能是ibatis的session被关闭了, 后面看了一下测试程序其实是把sqlS ...

  9. If嵌套

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. T57274 黑暗城堡

    传送门 思路: 先求出各个点到 1 的最短路径.分别用两个数组将最短路径记录下来(一个要用来排序).按排序后的 dis 值从小到大枚举各点加入树有多少种方案,最后根据乘法原理把各个点的方案数乘起来就是 ...