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