java第十天之学到辽~
1.1 API概述以及Object类的概述
* API(Application Programming Interface)
应用程序编程接口
* Java API
是Java提供给我们使用的类,这些类将底层的实现封装了起来
* Object类
(1) 类层次结构的根类
(2) 所有类都直接或者间接的继承自该类
* 构造方法
public Object()
1.2 Object类的hashCode()方法
* public int hashCode()
(1) 返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
(2) 不同对象的,hashCode()一般来说不会相同。
同一个对象的hashCode()值肯定相同。
(3) 不是对象的实际地址值,可以理解为逻辑地址值
# 1.3 Object类的getClass()方法
* public final Class getClass()
(1) 返回此 Object 的运行时类。
(2) 可以通过Class类中的一个方法,获取对象的真实类的全名称。
1.4 Object类的toString()方法
* 返回该对象的字符串表示。
* 源代码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
(1) 由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
重写, 一般是将该类的所有的成员变量组成返回即可
(2) 自动生成
直接输出对应的名称,就是调用对象的toString()方法
1.5 Object类的equals()方法
* 默认情况下比较的是对象的引用是否相同
* 由于比较对象的引用没有意义,一般建议重写该方法。一般用于比较成员变量的值是否相等
* 代码演示
public class MyTest2 {
public static void main(String[] args) {
// boolean equals (Object obj) 比较两个对象的地址值是否相等
Object obj1 = new Object();
Object obj2 = new Object();
System.out.println(obj1==obj2);
boolean equals = obj1.equals(obj2);
System.out.println(equals);
* equals方法一般会被改写,因为比较两个对象的地址值一般是没有意义的
* 如何重写,建议去查看jdk文档,查看源码
1.6 Object类的clone() 方法
* clone()的权限修饰符是受保护的,在用的时候,让该类重写该方法,并把该方法的权限修饰符改为public
(1)对象的浅克隆:浅克隆 深克隆
(2)使用clone()方法采用的是浅克隆的方式
(3)对象浅克隆要注意的细节: 如果一个对象需要调用clone的方法克隆
那么该对象所属的类必须要实现Cloneable接口
(4)对象的浅克隆就是克隆一个对象的时候,如果被克隆的对象中维护了
另外一个类的对象
(5) 浅克隆也不会调用到构造方法的对象的
(6) 深克隆(后面讲):采用IO流来实现
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ff37c16f27fee6fd188f8781943db09b.png)