import java.util.HashSet;
public class interviewTest {
/*
* ==和equals的区别
* 1.==:对于基本数据类型,比较的是数值
* 对于引用数据类型,比较的是地址值
* 2.equals:用于比较引用数据类型。
* 当没有重写equals()方法时,默认与==相同,比较的是地址值
* 当重写了equals()方法时,按照重写的方法确定(引用数据类型String重写了equals()方法)
* 3.hashSet:判断hashSet的元素是否相等,通过hashCode()方法,并且equals()方法必须重写,返回值必须相等。
*/
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true(String引用数据类型,重写了equals()方法)
HashSet<String> set01 = new HashSet<>();
set01.add(s1);
set01.add(s2);
System.out.println(s1.hashCode()+"\t"+s2.hashCode());
System.out.println(set01.size());//1
Person p1 = new Person("abc");
Person p2 = new Person("abc");
System.out.println(p1 == p2);//false
System.out.println(p1.equals(p2));//false,没有重写equals()方法,与==相同,比较的是地址值
HashSet<Person> set02 = new HashSet<>();
set02.add(p1);
set02.add(p2);
System.out.println(p1.hashCode()+"\t"+p2.hashCode());
System.out.println(set02.size());//2
}
}