定义
是所有类的直接或者间接父类,是 Java 中唯一一个没有父类的类。其中所有的方法都是可以被子类继承的。
常用方法
- equals方法: 比较两个对象引用的地址值是否相同,默认情况下是使用 “==” 进行比较,但是这个方法一般会被之类重写,如下图是 String 类型的 equals 方法,他对父类的方法进行了重写,比较的是值而非地址值。
public class Main {public static void main(String[] args) {String str1 = new String("abc");String str2 = new String("abc");System.out.println(str1.equals(str2)); // trueSystem.out.println(str1 == str2); // false}}
- hashCode方法: hashCode (哈希码|散列码) 是一种编码方式。每个对象都会继承这个方法如果不重写,那么他会将对象地址值转为 int 数组进行返回。hashCode 的作用就是确定对象在 Hash表中的索引位置,提高查询效率。
建议: hashCode 和 equals 方法应该同时被重写。应为 hashCode 是为了提高查询效率,但是可能会产生 hash 冲突(两个对象 hashCode 相同),此时 需要重写 equals 来判断两个对象是否值相同(原始是比较地址),如果相同则不插入,不相同则以链表(具体实现可以百度一下)来处理这个 hash 冲突。这个不会写没有关系,可以使用快捷键 Auto + Insert 帮我们自动生成。
- toString 方法: 打印对象会自动调用 toString 方法,如果不重写这回调用 Object 默认的。一般我们会按照我们自定义的方式重写该方法。当然也可以使用快捷键 Auto + Insert 帮我们自动生成。
- native 方法: native 修饰的方法,只说明不实现。Java 只能调用这个方法,但是不能查看和修改。
- clone 方法:
- 创建一个和当前对象相同的对象(属性相同),和 “=” 赋值操做不同,clone 方法是直接创建了一个副本,开辟了一个新的地址用来存拷贝后的对象,赋值操做只是将两个引用指向同一块地址。
- clone 由浅拷贝和深拷贝的区分,当对象类属性存在引用类型时可见,虽然执行拷贝后的两个对象在不同地址,但是里面引用类型变量确实指向同一块地址(浅拷贝)。所以对于引用类型的属性,应该做深拷贝(将其中引用类型同样再拷贝一份)。
- 代码编写要求:
- 必须要实现 Cloneable 接口(标识性接口)。
- 重写 clone 方法,用 public 修饰。
- 要处理 CloneNotSupportedException 异常。