关注「Java视界」公众号,获取更多技术干货

“==”和“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。

posted @ 2022-06-25 14:03  沙滩de流沙  阅读(39)  评论(0编辑  收藏  举报

关注「Java视界」公众号,获取更多技术干货