对于基本数据类型(例如int),‘= =’ 比较的是两者的值是否相等,不会去比较其他内容。
对于引用类型(类、接口、数组),‘= =’比的是引用,即在内存中的位置
例如:
String x = new String("a");
String y = new String("a");
System.out.println(x == y);
这里返回false
因为两者在堆内存中开辟的空间位置不同,之所以空间位置不同,是因为x和y是两个不同的String类对象
又如下例:
String x = "a";
String y = "a";
System.out.println(x == y);
这里返回true
此时的x和y是字符串对象 “a” 的不同引用,所有在内存中的位置当然是一样的
Object类中的equals方法就是使用 ‘= =’ 作为其中的方法体。只有两个类的引用是相等的,即是一个类的情况下equals方法才能返回true,所以一般情况下这种对比无意义。在创建的对象中,有必要重写equals()方法。String类中就重写了equals方法,只需要两个String类型的字符串所有元素一样就返回true