API帮助文档(二)

一.Object

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

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

一.Object的构造方法:

没有带参构造,只有一个空参构造

原因是在Java中只有子类的共性才会往父类中抽取,但是Object是Java中的顶级父类,没有一个属性是所有子类都有的,所以没有成员变量,自然没有带参构造方法。

二.Object的成员方法:

1.toString();

对于打印结果java.lang.Object@776ec8df

java.lang是包名

Object是类名

@是固定合适

776ec8df是对象的地址值

toString();的源代码

当我们直接打印时

我们发现调用方法和不调用方法打印结果一样

是因为printfln();方法的源代码里面也有一个toString();

因为默认情况下Object类中的toString方法返回地址值

所以我们打印的就是地址值。

当我们想要得到属性时,就要重写toString;

我们创建一个Student类,重写toString方法

此时我们再次创建对象,就可以打印内部的属性值。

总结:

如果我们打印一个对像想要看到属性值,只需要重写toString方法,返回值把属性拼接即可。

我们可以使用ptg插件自动完成

2.equals();

比较两个对象是否相等。

举个例子

为什么输出false呢?

首先我们没有在Student里面重写equals所以要看Object类中的源代码

可以发现他是使用==来进行判断的,==判断的是地址值,所以输出false。、

而我们一般比较地址值。

当我们父类方法不能满足需求,就要重写方法

我们在Student中按下ALT+INS

重写之后就比较属性值了

结论:如果没有重写equals方法,默认比较地址值

当我们需要比较属性值,就要去重写

小练习:

思考一下,输出的是什么

可以看到全是false

因为第一个被s调用,s是字符串,所以在String中的toString的源代码

他表示先判断是否为字符串,如果是字符串在比较内部属性,如果不是则直接返回false;

第二个调用者sb是StringBuilder。

所以要看StringBuilder中的toString,因为StringBuilde里面并没有重写toString方法,所以默认调用Object类中的toString方法

而这里sb 和 s地址值不同,所以返回false

两个返回虽然都是false,但是原因不同。

3.clone();

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

我们先创建有以下属性的Javabean类

我们无法直接通过对象调用clone方法,要在Student中重写

并且添加一个接口

对于这个接口

我们可以开始克隆

关宇克隆对象

方法会在底层帮我们创建一个对象,并把原来的对象拷贝过去

书写细节

1.重写Object类中的clone

2.让你的Javabean类实现Cloneable接口

3.创建原对象并调用clone既可以了。

Java的克隆有两种方式

第一种:浅克隆/浅拷贝

这种拷贝方式

对于基本数据类型,直接把属性值拷贝过去

对于引用数据类型,是把地址值拷贝过去,(字符串/数组等等)

对于数组而言,两个对象指向一个数组,这样会有一个特点

当其中一个对象进行修改,另外一个也会更改

第二种:深克隆/深拷贝

这种拷贝方式

对于基本数据类型,直接把属性值拷贝过去

因为字符串只要不是new出来的就会在串池进行管理,所以会进行复用

对于数组(和其他引用数据类型)而言会在创建一个数组,把数组的值拷贝过去(新的与原来的互不干涉)

系统默认就是浅克隆

进行深克隆的方法:使用第三方工具gson

三.关于Object的总结

相关推荐
啦啦右一2 分钟前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring
森屿Serien4 分钟前
Spring Boot常用注解
java·spring boot·后端
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
∝请叫*我简单先生2 小时前
java如何使用poi-tl在word模板里渲染多张图片
java·后端·poi-tl
zquwei3 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
dessler4 小时前
Docker-run命令详细讲解
linux·运维·后端·docker
Q_19284999064 小时前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
ZSYP-S5 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
Yuan_o_5 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端