==与equals的区别
一、==
- ==比较基本类型时比较两者的值是否相等;
- ==比较引用类型时比较两者的引用对象内存地址是否相同;
二、equals
equals不能用于基本类型变量之间的比较;
-
基类Object中的equals(): 本质是 == !!!
-
被String类重写的equals():
- 比较对象如果不是String类的对象,或者是其直接或间接子类,或者是其接口的实现类直接返回false;
- String类型之间比较对象的内容
举例如下:
String s1 = "Hello"; // String 直接创建
String s2 = "Hello"; // String 直接创建
String s3 = s1; // 相同引用
String s4 = new String("Hello"); // String 对象创建
String s5 = new String("Hello"); // String 对象创建
s1 == s1; // true, 相同引用
s1 == s2; // true, s1 和 s2 都在公共池中,引用相同
s1 == s3; // true, s3 与 s1 引用相同
s1 == s4; // false, 不同引用地址
s4 == s5; // false, 堆中不同引用地址
s1.equals(s3); // true, 相同内容
s1.equals(s4); // true, 相同内容
s4.equals(s5); // true, 相同内容