== 与 equals 有什么区别?
- ==:
-
- 用于基本类型比较时,比较值是否相等;
- 用于引用类型比较时,比较对象的内存地址是否相等。
- equals:
-
- 默认是比较对象的内存地址,但大多数类都会重写equals方法来改变默认的行为,使其比较对象的内容而不是对象的内存地址。比如 string、Integer 重写了equals方法变成比较值是否相等。
@Test
public void compareDemo1() {
int x = 10;
int y = 10;
//比较值相等,true
System.out.println(x == y); // true
String str1 = new String("baili");
String str2 = new String("baili");
//比较对象内存地址不相同,false
System.out.println(str1 == str2); // false
//比较字符相同,true
System.out.println(str1.equals(str2)); // true
}