java 双等号(==) 与equals方法的区别
- == 用于比较基本数据类型时,比较的是值
- ==用于比较引用数据类型时,比较的是地址
- equals方法在Object类中比较的也是地址,因为在低层也是使用==进行比较
- String类调用equals方法比较的内容,因为String类对equals方法进行了重写,改为了比较字符串的内容
package com.qfedu.test2;
/*** == 与 equals方法区别* @author **/
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");//== 比较的是地址 falseSystem.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");//==比较的是地址 falseSystem.out.println(str1 == str2);//String 中重写的equals方法 比较的是内容 输出trueSystem.out.println(str1.equals(str2));}}
写了个增强版:https://blog.csdn.net/qq_44657530/article/details/121843658