== 和 equals 的区别?
- ==:如果作用于基本数据类型的变量,则直接比较其存储的值是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
- equals:比较是否是同一个对象。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,在没有重写equals()方法的类中,和==一样比较引用类型变量所指向的对象地址是否相等。重写equals方法就看各个类重写后的逻辑,比如string类,虽然是引用类型,但是String类中重写了equals方法,方法内部比较的是字符串中的各个字符是否全部相等。
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
String str3 = "abc";
String str4 = "abc";
//比较对象内存地址相同,true
System.out.println(str3 == str4); // true
}