Java9 Object & Objects
构造方法:只有一个空参.
方法:
toString
其中,@后的是对象的地址值(简单理解).
我们直接打印一个对象,得到的结果和toString后的结果是一样的,为什么?
out是System中的静态成员.因此用System.out.println是out中的方法.

我们可以重写toString,从而方便打印.
equals
Object的默认方法,就是调用==,比较地址值.
因此我们可以重写.IDEA帮我们自动生成的格式:
这样生成的会比较每个属性的值.
两个都是false.
为什么?
String类的equals:
可见,如果比较对象不是String,那么就返回false.
StringBuilder根本没有重写equals方法,因此比较的是地址值.
clone
由于protect我们调用不了(protect只能访问同一个包,以及不同包的子类),因此只能重写
在重写之前,了解一下:
这个接口是干嘛的?
回到Object,假如我想看Object如何实现clone的,那么怎么办?
注意,clone返回的是Object,因此需要强转.
Object默认的clone是浅拷贝.如果需要深拷贝,需要自己实现
ps:为什么String不需要处理?因为String虽然存的是地址,但是都是指向串池的常量,浅拷贝也不要紧.
刚才写的深拷贝还是太麻烦了.我们一般是通过引入第三方工具来辅助我们进行深拷贝的.
如gson

在项目根目录添加/lib,导入jar包,然后add as Library.
也就是序列化之后再反序列化,就能得到新对象.
Objects 工具类
太麻烦了.
源码: