Java-面向对象_Object类的equals(2)

instanceof运算符:

子类:

public boolean equals(Object obj) {
        /*
         * instanceof运算符:
         * a instanceof b:
         * 判断a对象是否是b这个类的实例,如果是 返回true 如果不是返回false
         */
        if(obj instanceof Phone) {
            //要把obj的类型转换为当前类的类型
            Phone other = (Phone)obj;
            //this指的是当前调用
            if(this.getName()==other.getName()&&this.getPrice()==other.getPrice()&&this.getYear()==other.getYear()) {
                return true;
            }
        }
        
        return false;
    }

测试类:比较两个不同的类

public class Test {

    public static void main(String[] args) {
        
        //创建Phone类的对象:
        Phone phone = new Phone("华为P40",5200,2020);
        Phone ps = new Phone("华为P40",5200,2020);
        //比较两个对象:P1和P2对象:
        //==的作用:比较左右两侧的值是相等,返回true,要么不相等返回false
        
        System.out.println(phone==ps);
        //对于引用数据类型来说,比较的是地址值是否相等
        
        //Object类提供了一个方法:作用:比较对象具体内容是否相等。
        boolean flag = phone.equals(ps);//点进源码发现:底层依旧比较的是==,比较的还是地址值。
        System.out.println(flag);
        
        Cat cat = new Cat();
        
        System.out.println(phone.equals(cat));
    }

}

运行:

 

 

posted @ 2021-03-01 23:03  别看我看路  阅读(44)  评论(0编辑  收藏  举报