Object类

如果一个类没有指定父类,默认就是继承Object类。
Object类里面共有11个方法:
经常用到的equals(),toString()都是直接使用或者重写的Object里面的这些方法;
另外还有final native修饰的方法:反射需要用到的getClass(),线程操作需要的notify(),notifyAll(),wait(long timeout);
还有native修饰的方法:hashCode()和clone()

返回值 方法名 作用
protected Object clone() 创建并返回此对象的副本
boolean equals(Object obj) 判断一些其他对象是否等于此
protected void finalize() 当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象
Class<?> getClass() 返回此Object的运行时类
int hashCode() 返回对象的哈希码值
void notify() 唤醒正在等待对象监视器的单个线程
void notifyAll() 唤醒正在等待对象监视器的所有线程
String toString() 返回对象的字符串表示形式
void wait() 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法
void wait(long timeout) 导致当前线程等待,直到另一个线程调用 notify()方法或该对象的 notifyAll()方法,或者指定的时间已过
void wait(long timeout, int nanos) 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间
Object类源码
package java.lang;public class Object {private static native void registerNatives();static {registerNatives();}public final native Class<?> getClass();public native int hashCode();public boolean equals(Object obj) {return (this == obj);}protected native Object clone() throws CloneNotSupportedException;public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}public final native void notify();public final native void notifyAll();public final native void wait(long timeout) throws InterruptedException;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);}public final void wait() throws InterruptedException {wait(0);}protected void finalize() throws Throwable { }
}

Objects类

Objects类是final修饰的类,不可继承,内部方法都是static方法,从jdk1.7开始才引入了Objects类

返回值 方法名 作用
static int compare(T a, T b, Comparator<? super T> c) 如果参数a,b相同则返回0,否则返回c.compare(a, b)的结果
static boolean deepEquals(Object a, Object b) 对比a,b参数是否深层次相等,假定a,b为数组,对比数组的每个参数
static boolean equals(Object a, Object b) 对比a,b参数是否相等
static int hash(Object… values) 为输入值序列生成哈希码
static int hashCode(Object o) 返回哈希码。如果o为null则返回0
static boolean isNull(Object obj) 如果obj参数为null返回true
static boolean nonNull(Object obj) 如果obj参数不为null返回true
static T requireNonNull(T obj) 检查指定的对象引用不是 null,为null报空指针错误
static T requireNonNull(T obj, String message) 检查指定的对象引用不是null并抛出自定义的NullPointerException(如果是)
static T requireNonNull(T obj, Supplier messageSupplier) 检查指定的对象引用不是null并抛出一个自定义的NullPointerException(如果是)
static String toString(Object o) 返回对象的字符串表示形式
static String toString(Object o, String nullDefault) 如果第一个参数不是 null ,则返回第一个参数调用 toString的结果,否则直接将第二个参数nullDefault返回
Objects类源码
package java.util;import java.util.function.Supplier;public final class Objects {private Objects() {throw new AssertionError("No java.util.Objects instances for you!");}public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}public static boolean deepEquals(Object a, Object b) {if (a == b)return true;else if (a == null || b == null)return false;elsereturn Arrays.deepEquals0(a, b);}public static int hashCode(Object o) {return o != null ? o.hashCode() : 0;}public static int hash(Object... values) {return Arrays.hashCode(values);}public static String toString(Object o) {return String.valueOf(o);}public static String toString(Object o, String nullDefault) {return (o != null) ? o.toString() : nullDefault;}public static <T> int compare(T a, T b, Comparator<? super T> c) {return (a == b) ? 0 :  c.compare(a, b);}public static <T> T requireNonNull(T obj) {if (obj == null)throw new NullPointerException();return obj;}public static <T> T requireNonNull(T obj, String message) {if (obj == null)throw new NullPointerException(message);return obj;}public static boolean isNull(Object obj) {return obj == null;}public static boolean nonNull(Object obj) {return obj != null;}public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {if (obj == null)throw new NullPointerException(messageSupplier.get());return obj;}
}

Object和Objects的区别相关推荐

  1. Object 和 Objects 的区别

    一.Object 类 如果一个类没有指定父类,默认就是继承 Object 类.Object 类里面共有 11 个方法:经常用到的 equals(),toString() 都是直接使用或者重写 Obje ...

  2. API:Math、System、Object、Objects、equals、toString、BigDecimal

    API: Application Programming Interface  应用程序接口 简单来说:就是Java已经帮我们写好的接口,直接拿来用即可 api文档--甲骨文官网---下载java-- ...

  3. java之Thread.sleep(long)与object.wait()/object.wait(long)的区别及相关概念梳理(good)

    一.Thread.sleep(long)与object.wait()/object.wait(long)的区别 sleep(long)与wait()/wait(long)行为上有些类似,主要区别如下: ...

  4. html标签object和embed,html标签object和embed的区别

    object和embed的区别 The code in bold above is the actual code that you need to place in your page to emb ...

  5. flash文本呈现html啥意思,显示flash内容时用的OBJECT和EMBED标签区别介绍

    显示flash内容时用的OBJECT和EMBED标签区别介绍 发布时间:2014-05-13 18:03:29   作者:佚名   我要评论 要在网页中正常显示flash内容,那么页面中必须要有指定f ...

  6. Object和Objects(java)

    Object和Objects 文章目录 Object和Objects Object Object的构造方法 Object的成员方法 public String toString() public bo ...

  7. scala class和object,trait的区别

    2019独角兽企业重金招聘Python工程师标准>>> Scala类 class Counter {private var value = 0 // 必须初始化字段def incre ...

  8. scala(3):class和object,trait的区别

    2019独角兽企业重金招聘Python工程师标准>>> Scala类 1 2 3 4 5 6 7 8 9 10 11 12 13 class Counter { private va ...

  9. AS3中Object与Dictionary的区别

    AS3中的Dictionary类(flash.utils.Dictionary)是一个新的AS类. Dictionary类和Object唯一的区别在于: Dictionary对象可以使用非字符串作为键 ...

最新文章

  1. docker api 基本介绍和使用
  2. 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
  3. 【Oracle报错】ORA-01795: 列表中的最大表达式数为 1000 问题解决(使用JDK8的 stream 实现)
  4. mysql命令:查看表结构
  5. 阅读王概凯老师架构漫谈系列总结
  6. [Golang]计算一个文件的MD5值
  7. js一些平时会用到的
  8. POI读取单元格信息及单元格公式
  9. 计算机基础知识第三章测试,计计算机应用基础第三章测试题
  10. 蚁群算法路径规划_环境感知与规划专题(十)——基于采样的路径规划算法(二)...
  11. 8.分布式服务架构:原理、设计与实战 --- 敏捷开发2.0的自动化工具
  12. 中控考勤软件sqlserver数据库建立办法
  13. Linux命令学习笔记之 network NetworkManager
  14. R语言快速入门课——结合各种生物信息学及医学案例,使R语言快速入门——R软件及Rstudio下载(同步课程正在更新中)
  15. gradle下载很慢的解决方式
  16. springboot集成caffeine实现本地缓存
  17. python编写关不掉的流氓表白软件——快去找你爱的他表白吧
  18. Kafka学习之Replication tools之Reassign Partitions Tool
  19. 带宽与宽带的区别是什么?
  20. 编写文件服务器,编写服务器的头文件

热门文章

  1. 淘宝H5接口获取app数据6.0格式
  2. Django(8):请求对象和响应对象
  3. 学习 HT for Web 中的交互事件
  4. 升级后手动加点系统·1.2版·
  5. 骨癌棋童战和四大冠军 棋手微博记录圆梦时刻
  6. 双语播放器关键词研究
  7. 用html5代码打出一个王字,王老师html零基础学习笔记第6课——-font-size+特殊字符...
  8. 什么,同一个文本可以设置多种样式?
  9. 索尼FX6摄像机视频没保存的数据恢复案例
  10. 牵手泰隆银行,DevSuite助力IT项目研发管理新飞跃