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

相关推荐
bing_1582 小时前
简单工厂模式 (Simple Factory Pattern) 在Spring Boot 中的应用
spring boot·后端·简单工厂模式
天上掉下来个程小白2 小时前
案例-14.文件上传-简介
数据库·spring boot·后端·mybatis·状态模式
Asthenia04123 小时前
基于Jackson注解的JSON工具封装与Redis集成实战
后端
编程星空3 小时前
css主题色修改后会多出一个css吗?css怎么定义变量?
开发语言·后端·rust
程序员侠客行4 小时前
Spring事务原理 二
java·后端·spring
dmy4 小时前
docker 快速构建开发环境
后端·docker·容器
sjsjsbbsbsn5 小时前
Spring Boot定时任务原理
java·spring boot·后端
计算机毕设指导65 小时前
基于Springboot学生宿舍水电信息管理系统【附源码】
java·spring boot·后端·mysql·spring·tomcat·maven
计算机-秋大田5 小时前
基于Spring Boot的兴顺物流管理系统设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·spring·课程设计
羊小猪~~7 小时前
MYSQL学习笔记(九):MYSQL表的“增删改查”
数据库·笔记·后端·sql·学习·mysql·考研