Object和Objects(java)
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)相关推荐
- java中Object和Objects类、toString方法和equals方法介绍
Object类: Object类位于java.lang包中,lang包下的类无需导包就可以使用,object是Java语言中的根类,即所有类的父类.Object中描述的所有方法其子类都可以使用.在对象 ...
- Object类Objects类总结
1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类 ...
- 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 ...
- Object和Objects
Object类的作用 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类. Object类的方法是一切子类都可以直接使用的,所以我们要学习Object ...
- API:Math、System、Object、Objects、equals、toString、BigDecimal
API: Application Programming Interface 应用程序接口 简单来说:就是Java已经帮我们写好的接口,直接拿来用即可 api文档--甲骨文官网---下载java-- ...
- JOL(java object layout): java 对象内存布局
我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子?对于普通的java程序员来说,可能从来没有考虑过java中对象的问题,不懂这些也可以写好代码.今天,给大家介绍 ...
- JavaSE----常用类(Object、Objects、Math)
java.lang.Object类的说明: equals() . toString() . getClass() . hashCode() . clone() . finalize() . wait( ...
- Object 和 Objects 的区别
一.Object 类 如果一个类没有指定父类,默认就是继承 Object 类.Object 类里面共有 11 个方法:经常用到的 equals(),toString() 都是直接使用或者重写 Obje ...
- Object和Objects的区别
Object类 如果一个类没有指定父类,默认就是继承Object类. Object类里面共有11个方法: 经常用到的equals(),toString()都是直接使用或者重写的Object里面的这些方 ...
最新文章
- Web3与智能合约交互实战
- iOS 开发 OC编程 数组冒泡排序.图书管理
- service postgresql initdb [FAILED]
- JavaScript判断图片是否加载完成的三种方式
- java的全栈,Java全栈工程师
- java等边三角形代码_Java实现等边三角形--小程序,大思想
- 常用电脑的人养眼绝招
- VOJ1067 【矩阵经典7 构造矩阵】
- pycharm 修改darcual(暗黑)主题滚动条颜色
- 【STM32F429】第7章 ThreadX GUIX移植到STM32F429(MDK AC5)
- 共模电感适用的频率_共模电感的原理以及使用情况
- Elasticsearch: 运用 Pinned query 来提高文档的排名 (7.5发行版新功能)
- 答题微信小程序实现(7):python3将题库处理成json格式的。
- ubuntu服务器安装可视化桌面(Gnome)
- 醉林疯的OJ 1055: 兔子繁殖问题
- 个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资 | 36氪...
- 手机4k屏幕测试软件,索尼Z5 Premium 4K屏幕测试:1080p屏是王道!
- 带你Java入门(Java系列1)
- 使用脚本编写 Vim 编辑器,第 1 部分: 变量、值和表达式
- CentOS 7配置DNS和DHCP服务