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的总结

相关推荐
2401_857622662 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589362 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
哎呦没3 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch4 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
杨哥带你写代码5 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries6 小时前
读《show your work》的一点感悟
后端
A尘埃6 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23076 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
Marst Code6 小时前
(Django)初步使用
后端·python·django
代码之光_19806 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端