java -- Object

31 阅读2分钟

IDEA 自动补齐常用方法快捷键 fn+Alt+insert

简介

Object是Java中所有类的父类、超类、基类,位于继承树的最顶层。

可以说,任何一个没有显式地继承别的父类的类,都会直接继承Object,否则就是间接地继承Object,并且任何一个类也都会享有Object提供的方法。

因为Object是所有类的父类,所以基于多态的特性,该类可以用来代表任何一个类,允许把任何类型的对象赋给 Object类型的变量,也可以作为方法的参数、方法的返回值。

常用方法

equals

源码: image.png

  • equals 比较的是对象的地址 使用的是 == 比较方式
class Pig{

}
class Demo{
    public static void main(String[] args){
        Pig p1 = new Pig();
        Pig p2 = new Pig();
        boolean b = p1.equals(p2);
        Ststem.out.println(b);
    }
}
  • 可以使用equals是用来比较两个对象是否相同(不是地址值的相同,是两个对象的属性是否完全一致)
  • equals不能和null进行比较
class Pig{
    private String name;
    private int age;
    private String name;
    public Pig(){}
    public Pig(String name,int age){
        this.name = name;
        this.age = age;
    }
    public boolean equals(Object obj){ 
        if(obj == null){
            return false;
        }
        // instanceof:判断obj对象的真实数据类型是不是Pig
        if(!(obj instanceof Pig)){
            return false;
        }
        // Object object = p2 = new Pig();
        Pig p = (Pig)obj;
        return this.age = p.age && this.name.equals(p.name);
    }
    //way-2
    //public boolean equals(Object obj){ 
    //   if(this == obj) return true;
    //   if(obj == null) return false;
    //   if(this.getClass() != obj.getClass()) reutrn false;
    //   
    //   Pig other = (Pig)obj;
    //   if(age != other.age) return false;
    //   if(name == null){
    //       if(other.name != null) return false;
    //   }else if(!name.equals(other.name)){
    //       returen false;
    //   }
    //   return true;
    //}
}
class Demo{
    public static void main(String[] args){
        Pig p1 = new Pig('tom',18);
        Pig p2 = new Pig('jerry',20);
        boolean b = p1.equals(p2);
        Ststem.out.println(b);
    }
}

toString

源码:

image.png

  • getClass().getName() —— 获取类的包名+对象在内存中的地址
  • Integer.toHexString(hashCode()) —— 获取哈希Code值
  • 返回值是一个字符串

在OBject类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。

  如果我们在代码里直接输出一个对象,你会发现它输出的这个对象在内存中的地址,我们把它称为哈希码,它是通过哈希算法生成的一个字符串,是用来唯一区分对象的,可以想象为身份证号。

public Demo{
    public static void main(String[] args){
        Dog dog = new Dog();
        System.out.println(dog);
        System.out.println(dog.toString());
    }
}

结果: image.png