Object和Objects

文章目录

  • Object和Objects
    • Object
      • Object的构造方法
      • Object的成员方法
        • public String toString()
        • public boolean equals(Object obj)
        • protected Object clone(int a)
    • Objects
      • Objects的成员方法
        • public static boolean equals(Object a,Object b)
        • public static boolean isNull(Object obj)
        • public static boolean nonNull(Object obj)

Object

Object是Java中的顶级父类,所有的类都直接或间接的继承于Object类

Object类中的方法可以被所有子类访问

Object的构造方法

public Object()  //空参构造

在顶级父类中只有无参构造

Object的成员方法

方法名 说明
public String toString() 返回对象的字符串表示形式
public boolean equals(Object obj) 比较两个对象是否相等
protected Object clone(int a) 对象克隆

public String toString()

     Object obj= new Object();String str1 = obj.toString();System.out.println(str1);

运行结果如下

以“@”为界分为两部分

在Object文件下,toString的代码就是返回这种形式

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

如果想要改变形式的话,可以重写toString

public boolean equals(Object obj)

     Person p1=new Person();Person p2=new Person();boolean reault=p1.equals(p2);System.out.println(reault);

运行结果直接会报false

  • 如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较的是地址值是否相等

  • 根据要求可以对equals进行重写,重写之后就可以比较属性值了

protected Object clone(int a)

对象克隆:把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制

  • 浅克隆:引用数据类型会直接克隆地址值,当两个对象中的一方进行了修改,就都会修改

  • 深克隆:引用数据类型不会直接克隆地址值,会重新创建一个,两者互不影响,字符串会复用

其中Object的克隆clone就是浅克隆,如果要将浅克隆转化为深克隆,需要重写Object方法

//以重写Object的clone方法来实现数组的深克隆为例
@Overrideprotected Object clone() throws CloneNotSupportedException {//先把被克隆对象中的庶族获取出来int[] date = this.date;//创建新的数组int[] newOate = new int[date.length];//拷贝数组中的数据for (int i = 0; i < date.length; i++) {newOate[i] = date[i];}//调用父类中的方法克隆对象Person u = (Person) super.clone();//因为父类中的克隆方法是浅克隆,替换克隆出来对象中的数组地址值u.date = newOate;return u;}

Objects

Objects是一个工具类,提供一些方法去完成一些功能

Objects的成员方法

方法名 说明
public static boolean equals(Object a,Object b) 先做非空判断,比较两个对象
public static boolean isNull(Object obj) 判断对象是否为null,为null返回true,反之返回false
public static boolean nonNull(Object obj) 判断对象是否为null,跟isNull的结果相反

public static boolean equals(Object a,Object b)

下面是Objects的成员方法equals的源码

public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}

可以通过源码看出来,是会判断a是否为null,如果为null,直接返回false

如果a不为null,那么就利用a再次调用equals方法

此时根据a的类型,调用该类型中的equals方法

如果没有重写就睡比较地址值,如果重写了,就会根据情况进行比较

public static boolean isNull(Object obj)

实例演示

        Person p1 = null;Person p2 = new Person();System.out.println(Objects.isNull(p1));System.out.println(Objects.isNull(p2));

结果如下

源码展示

    public static boolean isNull(Object obj) {return obj == null;}

public static boolean nonNull(Object obj)

实例展示

        Person p1 = null;Person p2 = new Person();System.out.println(Objects.nonNull(p1));System.out.println(Objects.nonNull(p2));

结果如下

源码展示

    public static boolean nonNull(Object obj) {return obj != null;}

Object和Objects(java)相关推荐

  1. java中Object和Objects类、toString方法和equals方法介绍

    Object类: Object类位于java.lang包中,lang包下的类无需导包就可以使用,object是Java语言中的根类,即所有类的父类.Object中描述的所有方法其子类都可以使用.在对象 ...

  2. Object类Objects类总结

    1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类 ...

  3. oracle 传递table,将对象类型表从java传递到oracle 8i(Pass table of object type from java to oracle 8i)...

    将对象类型表从java传递到oracle 8i(Pass table of object type from java to oracle 8i) 我需要将一个对象列表(如值表)从java传递给ora ...

  4. Object和Objects

    Object类的作用 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类. Object类的方法是一切子类都可以直接使用的,所以我们要学习Object ...

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

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

  6. JOL(java object layout): java 对象内存布局

    我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子?对于普通的java程序员来说,可能从来没有考虑过java中对象的问题,不懂这些也可以写好代码.今天,给大家介绍 ...

  7. JavaSE----常用类(Object、Objects、Math)

    java.lang.Object类的说明: equals() . toString() . getClass() . hashCode() . clone() . finalize() . wait( ...

  8. Object 和 Objects 的区别

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

  9. Object和Objects的区别

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

最新文章

  1. Web3与智能合约交互实战
  2. iOS 开发 OC编程 数组冒泡排序.图书管理
  3. service postgresql initdb [FAILED]
  4. JavaScript判断图片是否加载完成的三种方式
  5. java的全栈,Java全栈工程师
  6. java等边三角形代码_Java实现等边三角形--小程序,大思想
  7. 常用电脑的人养眼绝招
  8. VOJ1067 【矩阵经典7 构造矩阵】
  9. pycharm 修改darcual(暗黑)主题滚动条颜色
  10. 【STM32F429】第7章 ThreadX GUIX移植到STM32F429(MDK AC5)
  11. 共模电感适用的频率_共模电感的原理以及使用情况
  12. Elasticsearch: 运用 Pinned query 来提高文档的排名 (7.5发行版新功能)
  13. 答题微信小程序实现(7):python3将题库处理成json格式的。
  14. ubuntu服务器安装可视化桌面(Gnome)
  15. 醉林疯的OJ 1055: 兔子繁殖问题
  16. 个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资 | 36氪...
  17. 手机4k屏幕测试软件,索尼Z5 Premium 4K屏幕测试:1080p屏是王道!
  18. 带你Java入门(Java系列1)
  19. 使用脚本编写 Vim 编辑器,第 1 部分: 变量、值和表达式
  20. CentOS 7配置DNS和DHCP服务

热门文章

  1. Python GIL锁
  2. 批处理软件-批处理之家
  3. linux中DNS服务器查看域名,如何在Linux中查看DNS服务器设置
  4. rust布料怎么弄_rust材料获得大全 | 手游网游页游攻略大全
  5. Tor+python
  6. Oracle数据库性能调优
  7. 致远小场景方案之表单获取ERP基础档案数据
  8. 去银行写代码是什么样的体验
  9. Linux 下 ftp的详细配置
  10. 为什么说 ChatGPT 引爆第四次工业革命?