java 双等号(==) 与equals方法的区别
- == 用于比较基本数据类型时,比较的是值
- ==用于比较引用数据类型时,比较的是地址
- equals方法在Object类中比较的也是地址,因为在低层也是使用==进行比较
- String类调用equals方法比较的内容,因为String类对equals方法进行了重写,改为了比较字符串的内容
package com.qfedu.test2;
public class Person {
private String name;
private String idCard;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public Person(String name, String idCard) {
this.name = name;
this.idCard = idCard;
}
public Person() {}
public static void main(String[] args) {
Person p1 = new Person("张三","abcd");
Person p2 = new Person("张三","abc");
//== 比较的是地址 false
System.out.println(p1 == p2);
//Object类中equals方法低层使用的也是 == 所以比较的也是地址 打印false
System.out.println(p1.equals(p2));
System.out.println("======================");
//String 也是一个类 可以创建对象并赋值
String str1 = new String("abc");
String str2 = new String("abc");
//==比较的是地址 false
System.out.println(str1 == str2);
//String 中重写的equals方法 比较的是内容 输出true
System.out.println(str1.equals(str2));
}
}