equals方法需要满足:满足自反性,对程性,传递性,一致性,与null比较时为false
等价与相等
对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价。
- “==”
String str1 = "abc";
String str2 = "abc";
String ss1 = "a";
String ss2 = ss1 + "bc";
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
System.out.println(str1==ss2);
System.out.println(str1.equals(ss2));
StringBuilder str3 = new StringBuilder("abc");
StringBuilder str4 = new StringBuilder("abc");
System.out.println(str3==str4);
//执行结果:
//true
//true
//false
//true
//false
==判断则只有当判断的两个变量所使用的内存地址为相同时才返回true。
equals函数只要存放的内容相同,就可以返回true。
StringBuilder str3 = new StringBuilder("abc");
StringBuilder str4 = new StringBuilder("abc");
System.out.println(str3.equals(str4));
//false
当使用StringBuilder创建对象时,内存中会开辟一个新的专属的地址用于存放对象内容,
网友评论