“==”和“equals()”的区别
对于int类型的变量,我们只需要“==”来比较两者大小,但是对于两个字符串类型的变量不能完全用“==”来比较大小。
“==”和“equals()”的区别:
- “==” :可以用户数值的比较,但是比较字符串时比较的是两个字符串对象的内存地址是否相同;
- “equals()”: 比较的是两个对象的内容是否相等。
String str1 = "haha";
String str2 = new String("haha");
System.out.println(str1 == str2); //false
String str1 = "haha";
String str2 = new String("haha");
System.out.println(str1.equals(str2)); //true
重写equals方法的要求:
(1)自反性:对于任何非空引用x,x.equals(x)应该返回true。
(2)对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true。
(3)传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true。
(4)一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果。
(5)非空性:对于任意非空引用x,x.equals(null)应该返回false。