类的始祖Object

一、概述

     Object时java中顶级父类,也是唯一没有父类的类;它是整个java中最基本的类,在java中所有的类都默认继承了Object。

二、重要方法

    1、clone方法

          克隆出一个新的对象。

          使用clone方法时的注意点:

  1. 在使用这个方法的时候,需要抛出一个异常;
  2. 需要对应的类实现Cloneable接口;
  3. clone使用protected修饰,需要注意其使用范围;只能在本类、继承子类和同包类中使用;由于Object和子类不同包,相当于只能在子类中使用了。

      2、finalize方法

          通知GC进行垃圾对象的回收,但是GC不一定会执行,通知完成之后GC会进行内存的扫描。

      3、hashCode方法

          计算对象的哈希码。哈希码时根据哈希散列算法计算出来的。一般人为的认为每个对象的哈希码是唯一的。

      4、toString方法

           将对象转化为字符串来进行展示。如果直接打印一个对象,那么会默认调用对象的toString方法。

      5、getClass方法

            获取对象的实际类型而不是声明类型。

      6、equals方法

           判断两个对象是否相等。如果不重写,那么默认判断两个对象的地址是否一致。实际开发中旺旺需要重写。重写步骤如下:

  1. 判断地址是否一致;
  2. 判断参数是否为空;
  3. 判断类型是否一致;
  4. 判断属性是否一致:如果是基本类型,可以直接比较;如果是引用类型则需要多个判断。

     示例如下:

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");    
    }
}

 

 

  

 

posted @ 2019-04-16 08:50  虎啸千峰  阅读(190)  评论(0编辑  收藏  举报