equals与==的比较与使用

154 阅读1分钟

1. 性质不同

equals()是方法,基本数据类型是无法调用的

"=="这个是符号, 基本数据类型也可以调用

2. 比较内容不同

1. ==

始终比较的是内存地址

所以会出现以下的比较结果

'a'==97
// true

2. equals

1. 被重写

重写了父类Object 的euqals方法,就是按照重写后的方法进行比较

1. 比较字面量值

比较字面量值 常见的有以下几种

String
String a="a";
String b="a";
a.equals(b)
// true
包装类型
        Integer integer1 = 33;
        Integer integer2 = new Integer(33);
        System.out.println("integer1.equals(integer2) = " + integer1.equals(integer2));
        //integer1.equals(integer2) = true

被重写后的方法:

    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

2. 其他

如果有特殊的比较方式,可以自定义equals方法的条件

2.未被重写

 person p1=new person();
 person p2=new person();
 p1.equals(p2)
 //false

直接调用父类的Object方法 实际上还是用 "=="

    public boolean equals(Object obj) {
        return (this == obj);
    }

3.使用

1. equals

比较字面量值,要确保equals方法被正确重写

2. ==

比较变量内存地址是否相同,则使用==

3. 注意

int numberA=1;
int numberB=1;
if(numberA == numberB){
.......
    }

这个if条件是成立的 -------true 因为numberA numberB是指向同一内存地址