java基础之 equals和==的区别

先说==  

基础数据类型,使用==比较的是变量的值。比如int a = 13,int b =14;

a==b//两个变量的值不相同,返回false

引用数据类型,即对象,比较的是变量的引用地址(内存地址)。比如User u1 = new User();User u2 = new User();

u1==u2//比较两个变量的引用地址,引用地址不一样,返回false

再说equals

这个方法是Object的方法,也就说所有对象都会继承这个方法。

在Object类中equals方法实现为:

public boolean equals(Object obj){

       return (this==obj);

}

可见equals方法实际上也是用的==比较,即比较两个对象的地址是否相等。

但是,有些类重写了父类的equals方法,比如String、Date。这些个类实现equals的时候,比较的是内容是否相等。



总结:

1、基础数据类型 使用==比较的是值是否相等

2、引用数据类型  使用==比较的是内存地址是否相等

3、对于equals,如果类没有重写equals方法,则使用equals和==效果是一致的,即比较内存地址是否相等;

如果类重写了equals方法,则按照方法重写逻辑进行比较。比如String,使用equals比较的就是内容是否相等。

你可能感兴趣的:(java基础之 equals和==的区别)