常用类

简介: 常用类

六、常用类

1、Object类

  • 所有类的父类
  • 因为所有类都继承了Object类,因此省略了extends Object关键字
  • Object中的属性和方法就具有通用性
  • Object只声明了一个空参构造器

主要方法

  • toString()
  • getClass()
  • equals()
  • clone()
  • finalize()
  • 注意:Object类中的getClass(),notify(),notifyAll(),wait()等方法被定义为final类型,因此不能重写

clone()

  • 复制对象
  • 先分配一个和源对象同样大小的空间,在这个空间中创建一个新对象

Java语言中创建对象的方法

  • 使用New操作符创建一个对象
  • 使用clone方法复制一个对象

Clone和new创建对象的区别

  • new:本意是分配内存。首先根据new操作符后面的类型分配对应大小的内存空间,在调用构造函数,填充对象的各个域(即初始化)调用完构造方法后,一个对象创建完毕。将其引用(地址)发布到外部,即可在外部使用。如 Student stu = new Student(); new Student()即创建对象,Student stu代表用一个Student类型的对象接收创建好的新对象返回的地址
  • clone():
  • 第一步和new类似,都是分配内存。
  • 调用clone()方法时,分配的内存和源对象(即调用clone方法的对象)相同
  • 然后再使用源对象中对应的各个域,填充新对象的域。填充完成后,clone方法返回,一个新的相同的对象被创建。
  • 简单来说,就是通过clone方法创建一个和源对象类型相同的对象,按照源对象的规范要求新对象
  • 注意:调用clone()方法的对象必须实现Cloneable接口,重写clone()方法
  • Clone()方法是被protected的,保证只有类里面才能克隆该类对象

Clone与copy的区别

  • copy只是简单的指向了同一片内存地址,修改其中的属性时两个对象都会受到影响

Studentstu=newStudent();

Studentxiaoming=stu; //  指向同一片地址

xiaoming.setAge(18); // stu的age受到影响也变成了18

  • clone:完全拷贝出一个地址不同的对象,修改时不会受到影响

Studentstu=newStudent();

//需要先实现接口

Studentxiaoming= (stu).clone(); //  生成一个和stu一样的方法,且指向不同地址

xiaoming.setAge(18); // stu的age不受影响

Shallow Clone浅克隆和Deep Clone深克隆

  • 浅克隆:直接复制(让新对象的 属性/对象 指向源对象 属性/对象 的地址)
  • 深克隆:再创建一个新的、相同的属性/对象给新对象(地址不同)
  • clone方法执行的是浅拷贝(整体),如果有需要深拷贝的地方就要这个被引用的对象(部分)实现Cloneable接口并重写clone方法

类名 对象名 = (类名)super().clone()使用Cloneable接口的clone()方法深拷贝

2、toString()方法

  • 返回一个字符串,由类名、“@”和此对象哈希码的无符号16进制组成

publicStringtoString() {

returngetClass().getName() +"@"+Integer.toHexString(hashCode());

}

  • 当我们输出一个对象的引用时,实际上调用的是当前对象的toString()

System.out.println(cust.toString);

System.out.println(cust);

  • 此方法用的比较多,一般子类(String、Date、File等)都有覆盖(用于输出字符串值)
  • 推荐在学习阶段,所有属性的类都加上toString()方法
相关文章
|
机器学习/深度学习 人工智能 算法
量子计算的应用领域广泛
【8月更文挑战第4天】量子计算的应用领域广泛
254 1
|
分布式计算 Hadoop
在Hadoop节点线缆连接检查中线缆长度
【5月更文挑战第3天】在Hadoop节点线缆连接检查中线缆长度
66 3
在Hadoop节点线缆连接检查中线缆长度
|
边缘计算 运维 Cloud Native
探索云原生技术的未来发展趋势
随着数字化时代的不断深入,云原生技术已成为企业数字化转型的重要支撑。本文将探讨云原生技术的定义、特点以及未来发展趋势,重点关注容器化、微服务、自动化运维等方面,展望云原生技术在未来的发展方向与挑战。
226 28
|
运维 监控 定位技术
北斗高精度定位,破解共享单车停车乱象
如今,共享单车已经成为了许多人出行的首选方式,方便了市民们的“最后一公里”,给大家的生活带来了很多便利。然而,乱停乱放的单车也给城市治理带来了难题。在这种情况下,相关企业尝试将北斗导航定位芯片装载到共享单车上,通过高精度的位置识别,来破解乱停乱放的难题。
北斗高精度定位,破解共享单车停车乱象
|
API Python
python matplotlib.axes相关属性设置(绘图方式、坐标轴、坐标刻度、文本等)
为什么要用 ax ,而不是 plt 呢? 因为在绘制子图过程中,对于每一个子图的不同设置,ax 可以直接实现对于单个子图的设定,因此掌握必要的 ax 设置命令尤为重要!
python matplotlib.axes相关属性设置(绘图方式、坐标轴、坐标刻度、文本等)