类的始祖Object
一、概述
Object时java中顶级父类,也是唯一没有父类的类;它是整个java中最基本的类,在java中所有的类都默认继承了Object。
二、重要方法
1、clone方法
克隆出一个新的对象。
使用clone方法时的注意点:
- 在使用这个方法的时候,需要抛出一个异常;
- 需要对应的类实现Cloneable接口;
- clone使用protected修饰,需要注意其使用范围;只能在本类、继承子类和同包类中使用;由于Object和子类不同包,相当于只能在子类中使用了。
2、finalize方法
通知GC进行垃圾对象的回收,但是GC不一定会执行,通知完成之后GC会进行内存的扫描。
3、hashCode方法
计算对象的哈希码。哈希码时根据哈希散列算法计算出来的。一般人为的认为每个对象的哈希码是唯一的。
4、toString方法
将对象转化为字符串来进行展示。如果直接打印一个对象,那么会默认调用对象的toString方法。
5、getClass方法
获取对象的实际类型而不是声明类型。
6、equals方法
判断两个对象是否相等。如果不重写,那么默认判断两个对象的地址是否一致。实际开发中旺旺需要重写。重写步骤如下:
- 判断地址是否一致;
- 判断参数是否为空;
- 判断类型是否一致;
- 判断属性是否一致:如果是基本类型,可以直接比较;如果是引用类型则需要多个判断。
示例如下:
class User { public int System = 5; private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public boolean equals(Object obj) { //判断地址是否一致 if(this == obj) { return true; } //判断是否为null if(obj == null) { return false; } //判断类型是否一致 if(this.getClass() != obj.getClass()) return false; //判断对象的属性 User us = (User)obj; //判断对象的名称 if(this.userName == null) { if(us.userName != null) { return false; } } else if(!this.userName.equals(us.userName)) { return false; } //判断对象的密码 if(this.password == null) { if(us.password != null) { return false; } } else if(!this.password.equals(us.password)) { return false; } return true; } } public class ObjectExer { public static void main(String[] args) { User us = new User(); us.setUserName("张三"); us.setPassword("1234"); User us1 = new User(); us1.setUserName("张三"); us1.setPassword("1234"); }
}