成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kotlin里的`==`和`===`到底有啥不一樣?

開發 前端
1假設你和你兄弟用同款手機:用==比較:是不是同型號、同顏色、同配置?(內容一樣就算對)用===比較:是不是同一部手機?(必須是同一個物體)

舉個栗子先感受下

假設你和你兄弟用同款手機:

  • 用==比較:是不是同型號、同顏色、同配置?(內容一樣就算對)
  • 用===比較:是不是同一部手機?(必須是同一個物體)

這倆符號具體咋用?

 ==(內容相等)

  • 就像查戶口:檢查對象里每個屬性值是否完全一致
  • 底層原理:自動調用equals()方法(自己寫的類要重寫這個方法才有意義)
// 字符串比較(內容相同就認)
val a = "蘋果14"
val b = "蘋果" + 14
println(a == b) // true(內容一樣)

// 自定義類比較(沒重寫equals時)
class 手機(val 型號: String)
val 手機A = 手機("Mate60")
val 手機B = 手機("Mate60")
println(手機A == 手機B) // false(默認只比內存地址)

 ===(物理相等)

  • 就像查身份證:必須是同一個對象才返回true
  • 特殊福利:數字類型(比Int、Char、Boolean 等)Kotlin 會進行優化會被緩存復用,相同的值可能會指向同一個對象
// 同值不同對象
val 張三 = 手機("P70")
val 李四 = 手機("P70")
println(張三 === 李四) // false 

// 特殊數字緩存
val 錢1 = 100
val 錢2 = 100
println(錢1 === 錢2) // true(在緩存范圍內)

val 大錢1 = 100000
val 大錢2 = 100000  
println(大錢1 === 大錢2) // false(超出緩存)

什么時候用哪個?

用==的場合:

  • 比用戶輸入的內容
  • 檢查兩個訂單是否相同商品
  • 驗證密碼是否正確
  • 數據類(data class)自動支持內容比較

用===的場合:

  • 檢查是不是同一個用戶登錄
  • 單例模式驗證實例
  • 發現內存泄漏時追蹤對象
  • 優化性能(比如避免重復創建對象)

容易踩坑的地方

坑1:空對象比較

val 空訂單: 訂單? = null
val 另一個空訂單: 訂單? = null
println(空訂單 == 另一個空訂單) // true(都空)
println(空訂單 === 另一個空訂單) // true(都指向null)

坑2:字符串陷阱

val 名字1 = "張三"
val 名字2 = "張" + "三"
println(名字1 === 名字2) // true(編譯器優化成同一個)

val 動態名字 = StringBuilder().append("張").append("三").toString()
println(名字1 === 動態名字) // false(動態生成的地址不同)

總結

雙等號,比內容; 三等號,查身份。 基本類型看緩存, 對象比較要區分。

  • 優先用==比較內容,除非確實需要判斷是否是同一個對象
  • 寫數據類時直接用data class,自動幫你實現equals()
  • 遇到===返回true但內容不同?檢查是否修改了可變對象
  • 調試時用===快速定位對象是否被意外復用

操作符

名稱

比較內容

Java

==

結構相等

對象內容是否相同

equals()

===

引用相等

是否引用同一個對象

==

責任編輯:武曉燕 來源: 沐雨花飛碟
相關推薦

2020-05-15 10:16:43

HttpHttps網絡協議

2012-03-07 17:24:10

戴爾咨詢

2012-12-20 10:17:32

IT運維

2017-11-03 07:57:19

2021-02-15 11:32:20

Apt-getLinuxApt

2011-03-14 16:51:24

2021-12-23 15:11:46

Web 3.0元宇宙Metaverse

2015-10-19 12:33:01

華三/新IT

2017-05-25 15:02:46

聯宇益通SD-WAN

2016-05-09 18:40:26

VIP客戶緝拿

2023-03-20 08:19:23

GPT-4OpenAI

2009-02-04 15:43:45

敏捷開發PHPFleaPHP

2009-12-01 16:42:27

Gentoo Linu

2018-05-09 15:42:24

新零售

2010-11-24 20:18:48

Microsoft L統一溝通

2009-02-05 19:05:46

Windows 7試用虛擬機

2020-07-31 16:18:14

微信微信號移動應用

2011-02-28 10:38:13

Windows 8

2009-06-12 15:26:02

2016-03-24 18:51:40

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成在线人视频免费视频 | 精产国产伦理一二三区 | 日韩成人在线播放 | 丝袜毛片 | 天天操精品视频 | 国产亚洲人成a在线v网站 | 国产在线视频网 | 韩日精品一区 | 欧美一区二区三区在线观看 | 在线国产视频观看 | 毛片入口| 欧美日韩亚洲视频 | 成人影院在线观看 | 亚洲www啪成人一区二区麻豆 | 国产91九色| 日韩中文字幕 | 日本色综合 | 精品欧美一区免费观看α√ | 精品国产免费一区二区三区五区 | 精品久久久网站 | 欧美色综合一区二区三区 | 99热这里都是精品 | 久久伊人影院 | www.av7788.com| 黄色大片在线视频 | 欧美性一区二区三区 | 在线成人一区 | 国产欧美一区二区三区在线看 | 久久久av| 色综合久久久 | 91精品国产91久久久久青草 | 国产亚洲精品久久久优势 | 亚州综合在线 | 国产精品久久久久久吹潮 | 精品一区二区三区四区五区 | 国产在线一区二区三区 | 91视频88av| 在线观看黄色电影 | 日韩欧美精品在线 | 午夜视频在线播放 | 亚洲国产视频一区二区 |