1. 程式人生 > >java中兩個等號跟三個等號的區別?

java中兩個等號跟三個等號的區別?

首先,== equality 等同,=== identity 恆等。 
==, 兩邊值型別不同的時候,要先進行型別轉換,再比較。 
===,不做型別轉換,型別不同的一定不等。

下面分別說明: 
先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等: 
1、如果型別不同,就[不相等] 
2、如果兩個都是數值,並且是同一個值,那麼[相等];(!例外)的是,如果其中至少一個是NaN,那麼[不相等]。(判斷一個值是否是NaN,只能用isNaN()來判斷) 
3、如果兩個都是字串,每個位置的字元都一樣,那麼[相等];否則[不相等]。 
4、如果兩個值都是true,或者都是false,那麼[相等]。 
5、如果兩個值都引用同一個物件或函式,那麼[相等];否則[不相等]。 
6、如果兩個值都是null,或者都是undefined,那麼[相等]。 
再說 ==,根據以下規則: 
1、如果兩個值型別相同,進行 === 比較。 
2、如果兩個值型別不同,他們可能相等。根據下面規則進行型別轉換再比較: 
   a、如果一個是null、一個是undefined,那麼[相等]。 
   b、如果一個是字串,一個是數值,把字串轉換成數值再進行比較。 
   c、如果任一值是 true,把它轉換成 1 再比較;如果任一值是 false,把它轉換成 0 再比較。 
   d、如果一個是物件,另一個是數值或字串,把物件轉換成基礎型別的值再比較。物件轉換成基礎型別,利用它的toString或者valueOf方法。js核心內建類,會嘗試valueOf先於toString;例外的是Date,Date利用的是toString轉換。非js核心的物件,令說(比較麻煩,我也不大懂) 
   e、任何其他組合,都[不相等]。

舉例: 
"1" == true 
  型別不等,true會先轉換成數值 1,現在變成 "1" == 1,再把"1"轉換成 1,比較 1 == 1, 相等。

= 賦值運算子 
== 等於 
=== 嚴格等於 
例: 
var a = 3; 
var b = "3";

a==b 返回 true 
a===b 返回 false

因為a,b的型別不一樣 
===用來進行嚴格的比較判斷

相關推薦

java等號等號區別

首先,== equality 等同,=== identity 恆等。 ==, 兩邊值型別不同的時候,要先進行型別轉換,再比較。 ===,不做型別轉換,型別不同的一定不等。下面分別說明: 先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等: 1、如果型別不同,就

java方面,引數後面點(...)的含義

private void removeTempFiles(String... fileNames) { for (String fileName : fileNames) { try { new File(fileName).delete(); } catch (Excep

JAVAString,StringBuilder以及StringBuffer類之間的區別

不斷地學習,不斷地填充自己的技術庫,學習Java已經有一段時間了,由一開始的不適應到後來的足以靈活應對,不僅僅取決於老師的精緻講課,還有就是依靠我的學習祕籍:記錄自己的學習筆記。今天給大家分享的技術學習筆記是JAVAString,StringBuilder以及StringBuffer這三個類之間的區別。 &

javaa[i].lengtha.length的區別

public class Main { public static void main(String[] args) { int[][] A=new int[][]{{1,2},{4,5},{7,8,10,11,12},{}}; Sy

java 一個等於號和等於號等號區別

一個等號是賦值號,兩個等號是判斷號。賦值表示把右邊的值或引用賦給左邊的變數,判斷號表示返回符號兩邊的值是否相等,這裡的值包括引用。相等運算子"==",如果兩個運算元不是同一型別,則會先嚐試轉換型別在進行比較。嚴格相等運算子“==="首先計算其運算元的值,然後比較這兩個值,比較

js等號(==)和等號(===)的區別

js中兩個等號(==)和三個等號(===)的區別: 1. "=="表示:equality -> 等同  的意思,"=="使用兩個等號時,如果兩邊值的型別不同的時候,是要先先進行型別轉換後,才能做比較。 2. "==="表示:identity -> 恆等 的意思,

JS/JavaScript等號 == 和 等號 === 的區別

JavaScript中兩個等號 == 和 三個等號 === 的區別 一、概念 == 和 ===  (1)  "=="叫做相等運算子,"==="叫做嚴格運算子。 (2) ==,equalit

java字串連線的種方法

java中兩個字串連線有以下三種方法: 第一種方法:使用+; 第二種方法:使用concat(); 第三種方法:使用append(); 如下程式碼: public class Practice { //第一種方法:使用+ public static String

java字符串如何比較大小

blog 順序 body ring 差值 int print compare gpo 使用 String.compareTo 方法:compareTo() 的返回值是int, 它是先比較對應字符的大小(ASCII碼順序)1、如果字符串相等返回值02、如果第一個字符和

Javabyte型別相加結果賦值給byte型別的變數會報編譯錯誤,byte加byte的結果為什麼是int?

背景: 之前偶然看到有討論這個問題,在網上搜了半天,結果都不盡如人意,解釋沒有到位, 有的說byte加byte預設就是int,那為什麼這麼做呢? 這不是找麻煩麼?這種奇怪的預設還有哪些?帶來一些列疑問。。。。。。 有的說byte儲存的就是整型資料,這種說法的對錯姑且不論,至少我覺得難免有

java時間相減

間隔=Date1.getTime()-Date2.getTime();得出來的是毫秒數. 除1000是秒,再除60是分,再除60是小時. SimpleDateFormat myFormatter = new SimpleDateFormat( "yyyy-MM-dd "

Android-LayoutInflaterinflate方法引數和引數的區別

關於inflate引數問題,我想很多人多多少少都瞭解一點,網上也有很多關於這方面介紹的文章,但是枯燥的理論或者翻譯讓很多小夥伴看完之後還是一臉懵逼,so,我今天想通過三個案例來讓小夥伴徹底的搞清楚這個東東。本篇部落格我們不講原始碼,只看使用。原始碼的解讀會在下一篇博文中帶

JavaScript一個等號、二等號等號區別

一個等號是賦值操作,==先轉換型別再比較,===先判斷型別,如果不是同一型別直接為false。=== 判斷規則如果型別不同,就[不相等] 如果兩個都是數值,並且是同一個值,那麼[相等];(!例外)的是,如果其中至少一個是NaN,那麼[不相等]。(判斷一個值是否是NaN,只能用

案例帶你看懂LayoutInflaterinflate方法引數和引數的區別

關於inflate引數問題,我想很多人多多少少都瞭解一點,網上也有很多關於這方面介紹的文章,但是枯燥的理論或者翻譯讓很多小夥伴看完之後還是一臉懵逼,so,我今天想通過三個案例來讓小夥伴徹底的搞清楚這個東東。本篇部落格我們不講原始碼,只看使用。原始碼的解讀會在下一篇博文中帶來。

java引數後面點所代表的意思

java引數後面跟三個點是什麼意思 (2011-04-14 11:55:36)轉載 標籤: it    分類: OutStandingIdeas AVA中型別後面跟三個點是什麼來的。 瀏覽次數:808次懸賞分:5 | 解決時間:2009-6-26 10:30 | 提問者:不

java List copy 遇到的問題

先看一段程式碼:    把 List   taskDataRelInfos 中的 內容   拷貝到 List taskDataRels 中,二者 欄位型別 基本一樣。 List<TaskDataRelInfo> taskDataRelInfo

解決javadouble型別的值相加

每週六都急急忙忙趕過來加班,今天早上一同事問我兩個double型別相加會出現精度問題,找了很久沒找到原因,後來在網上一看需要額外處理一下,提供幾個通用的方法。 /** * 提供精確的加法運算 * @param

java執行緒同時執行是怎麼變化的

線上程執行中,兩個執行緒同時執行的情況是很平常的,下面我用一個案例來說明一下兩個執行緒同時執行時,執行緒狀態的變化情況: 程式碼如下: /*  * 功能:兩個執行緒同時執行是如何變化的  * 作者:zyj0813  * 案例:編寫一個程式,該程式可以接受一個整數n,建立兩個

javamap的融合(map有相同欄位)

試想這樣一個場景: 資料庫表中 有 城市資訊表 city_tbl; 有院士資訊表  ys_tbl ,其中院士有城市id欄位(id); 但是不是所有城市都有院士;  我們想要得到 城市的詳細資訊,包括院

js ==與===區別等號等號) 《轉》

== equality 等同,=== identity 恆等。 ==, 兩邊值型別不同的時候,要先進行型別轉換,再比較。 ===,不做型別轉換,型別不同的一定不等。 下面分別說明: 先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等: 1、如果型別不同,就[不相等] 2、如果兩個都是數值