原
java中equals和 == 的比较
代码演示package com.mszl.eq;
import java.util.HashSet;
import java.util.Set;
/**
* 功能:java中equals和 == 的比较
* 备注:更多资料请访问 http://www.91mszl.com
* @author bobo teacher
*/
public class E1 {
public static void main(String[] args) {
String aa=new String("abc");
String bb=new String("abc");
System.out.println(aa == bb); // false
System.out.println(aa.equals(bb)); // true
System.out.println(" ******************** ");
Set s1=new HashSet<>();
s1.add(aa);
s1.add(bb);
System.out.println(s1.size()); // 1
System.out.println(" ******************** ");
user u1 = new user("zhangsan");
user u2 = new user("zhangsan");
System.out.println(u1 == u2); // false
System.out.println(u1.equals(u2)); // false
System.out.println(" ******************** ");
Set t=new HashSet<>();
t.add(u1);
t.add(u2);
System.out.println(t.size()); // 2
}
}
执行结果:false
true
********************
1
********************
false
false
********************
2
总结:
1 “==” 即可以比较基本类型也可以比较引用类型,如果比较的是基本类型,比较的是值是否相等,如果比较的是引用类型则比较的是地址是否相等。即只要是new出来的对象,== 比较永远是false
2 equals比较的是引用类型,equals比较看它是否被重写过,如果没有被重写过,即用的是Object类的方法,则实际上是“==” 比较,即比较的是地址是否相等。
3 这里的equals方法是String类里重写了equals和hashCode方法的(重写equals也必须要重写hashCode方法)。如下图所示。
String 类中重写的hashCode方法。
String类中重写的equals方法。