首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 中字符串 equals 與 instanceof 的區別與用法詳解

     編輯:程式設計綜合問答

問題代碼

"add".equals(type)

核心概念區別

1. equals 方法

  • 用途:比較兩個對象的內容是否相等。
  • 字符串場景:"add".equals(type) 安全比較字符串字面量 "add" 與變量 type 的內容,避免 type.equals("add") 拋出空指針異常。
  • 對象比較:需重寫 equals() 定義業務邏輯上的相等性(如比較 ID)。

2. instanceof 運算符

  • 用途:判斷對象是否為某個類或其子類的實例。
  • 語法:obj instanceof Type — obj 是對象引用,Type 是類/接口名。
  • 示例:if (animal instanceof Dog) { ... }。

對比總結表

特性equals()instanceof
比較對象兩個對象的內容/值對象與類型
返回值boolean (相等 true)boolean (是實例 true)
典型場景字符串比較、去重、Map Key 比較多態類型判斷、向下轉型前檢查
空值安全"const".equals(var) 安全null instanceof Type 恆為 false

最佳實踐

  • 比較字符串常量時,始終將常量放在前面:"add".equals(type)。
  • 重寫 equals() 時必須同時重寫 hashCode(),保持契約一致。
  • 使用 instanceof 前確保引用非 null,否則直接 false 無意義。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved