java中的==和===

來源:互聯網
上載者:User

判斷兩個變數是否相等是程式設計中非常重要的運算。在處理原始值時,這種運算相當簡單,但涉及對

象,任務就稍有點複雜。ECMAScript提供了兩套運算子處理這個問題,等號和非等號用於處理原始值,

全等號和非全等號用於處理對象。

1. 等號和非等號

在ECMAScript中,等號由雙等號(= =)表示,若且唯若兩個運算數相等時,它返回true。非等號是感

歎號加等號(!=),若且唯若兩個運算數不相等時,它返回true。為確定兩個運算數是否相等,這兩個

運算子都會進行類型轉換。

執行類型轉換的基本規則如下:

q  如果一個運算數是Boolean值,在檢查相等性之前,把它轉換成數字值。false轉換成0,true轉換成

1。

q  如果一個運算數是字串,另一個是數字,在檢查相等性之前,要嘗試把字串轉換成數字。

q  如果一個運算數是對象,另一個是字串,在檢查相等性之前,要嘗試把對象轉換成字串(調用

toString()方法)。

q  如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字。

在進行比較時,該運算子還遵守下列規則:

q  值null和undefined相等。

q  在檢查相等性時,不能把null和undefined轉換成其他值。

q  如果某個運算數是NaN,等號將返回false,非等號將返回true。重要提示:即使兩個運算數都是NaN

,等號仍然返回false,因為根據規則,NaN不等於NaN。

q  如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數指向同一個對象,那麼等

號返回true,否則兩個運算數不等。

下表列出了一些特殊情況及它們的結果:

 

表  達  式
 

 

null = = undefined   true
 

"NaN" = = NaN
 
false
 

5 = = NaN
 
false
 

NaN = = NaN
 
false
 

NaN != NaN
 
true
 

false = =0
 
true
 

true = =1
 
true
 

true = = 2
 
false
 

undefined = = 0
 
false
 

null = = 0
 
false
 

"5" = = 5
 
true
 

2. 全等號和非全等號

等號和非等號的同類運算子是全等號和非全等號。這兩個運算子所做的與等號和非等號相同,只是它們

在檢查相等性前,不執行類型轉換。全等號由三個等號(= = =)表示,只有在無需類型轉換運算數就

相等的情況下,才返回true。例如:

 

在這段代碼中,第一個警告使用等號比較字串"55"和數字55,輸出"true"。如前所述,這是因為字元

串"55"將被轉換成數字55,然後才與另一個數字55進行比較。第二個警告使用全等號在沒有類型轉換的

情況下比較字串和數字,當然,字串不等於數字,所有輸出"false"。

非全等號由驚嘆號加兩個等號(!= =)表示,只有在無需類型轉換運算數不相等的情況下,才返回true

。例如:

 

這裡,第一個警告使用非等號,把字串"55"轉換成數字55,使得它與第二個運算數55相等。因此,計

算結果為false,因為兩個運算數被看作是相等的。第二個警告使用的是非全等號。該運算是在問:

“sNum與iNum不同嗎?”這個問題的答案是:“是的(true)”,因為sNum是字串,而iNum是數字,

它們當然不同。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.