欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Object类

程序员文章站 2022-06-04 13:37:37
...

Object类

Object是Java的顶层父类,所有的子类都可以使用Object的方法。下面学习几个常用方法

常用方法

String toString()
    把一个对象转换为字符串形式,默认为地址值的十六进制形式: “类名@地址值”
    对开发者而言更重要对象内部封装的数据
    一般子类复写toString方法把对象转换为属性值

boolean equals(Object obj)
    equals用于判断两个对象是否相等,本质上比较对象的地址值。
    对开发者而言更重要的是对象内部封装的数据,而不是地址值。
    一般子类复写equals方法比较对象的属性值,更符合实际需求

int hashCode()
   返回对象的哈希值

代码演示

创建一个Car类,复写toString方法和equals方法。

public class Car{
    private String brand;
    private String color;
    public Car(){

    }
    public Car(String brand,String color){
        this.brand=brand;
        this.color=color;
    }

    //get和set自己添加,此次节省空间,省略了
    @Override
    public String toString(){
        return "Person{brand="+brand+",color="+color+"}";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Car car = (Car) o;
        return Objects.equals(brand, car.brand) &&
                Objects.equals(color, car.color);
    }
}

public class Demo1 {
    public static void main(String[] args) {
        Car c1=new Car("吉利","红色");
        System.out.println(c1); //Car{brand='吉利', color='红色'}
        Car c2=new Car("吉利","红色");
        System.out.println(c2); //Car{brand='吉利', color='红色'}
        System.out.println(c1==c2); //false ,比较两个对象的地址值
        System.out.println(c1.equals(c2)); //true,比较的是对象的属性值
    }
}

Objects工具类

Objects工具类可以用来比较任意两个对象是否相等,而不担心对象为null比较的时候出现空NullPointerException异常

public class Demo3 {
    public static void main(String[] args) {
        Car c1=null;
        Car c2=new Car("比亚迪","红色");

     /*   if(c1!=null&&c1.equals(c2)){
            System.out.println("两个对象的属性值相同");
        }else{
            System.out.println("两个对象的属性值不相同");
        }
        */
	    //简化上面的代码,允许对象为null
        boolean f = Objects.equals(c1, c2);
        System.out.println(f);
    }
}
相关标签: API