大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 關系運算符詳解

關系運算符詳解

更新時間:2020-10-13 17:15:55 來源:動力節點 瀏覽1228次

關系運算符用于測試兩個值之間的關系,根據關系是否存在而返回true或false,關系表達式總是返回一個布爾值,通常在if、while或for語句中使用關系表達式,用以控制程序的執行流程。本文我們就根據實例來一起學習關系運算符。

Java中共有===、!==、==、!=、<、<=、>、>=8種關系運算符,本文將分別為大家來介紹這8種關系運算符。


一、恒等運算符

1.恒等運算符'===',也叫嚴格相等運算符,首先計算其操作數的值,然后比較這兩個值,比較過程沒有任何類型轉換,比較過程如下:

如果兩個值的類型不相同,則返回false

console.log(1 === '1');//false

console.log(1 === [1]);//false

如果兩個值都是Undefined、Null、Boolean、Number、String相同原始類型的值,值相同,就返回true,否則,返回false

console.log(undefined === undefined);//true

console.log(null === null);//true

console.log(true === true);//true

console.log(false === false);//true

console.log(1 === 1);//true

console.log(2.5 === 2.5);//true

如果兩個值引用同一個對象,則返回true,否則,返回false

更詳細的解釋是,javascript對象的比較是引用的比較,而不是值的比較。對象和其本身是相等的,但和其他任何對象都不相等。如果兩個不同的對象具有相同數量的屬性,相同的屬性名和值,它們依然是不相等的

console.log([] === []);//false

console.log({} === {});//false

console.log(function(){} === function(){});//false

var a = {};

b = a;

console.log(a === b);//true


二、恒不等運算符

恒不等運算符(!==)又叫嚴格不等于運算符,操作數的比較過程與恒等運算符相同,結果取反。如果'==='的比較結果是true,則'!=='的比較結果是false;如果'==='的比較結果是false,則'!=='的比較結果是true

console.log(1 !== '1');//true

console.log(1 !== 1);//false

console.log(true !== false);//true

console.log({} !== {});//true


三、相等運算符

相等運算符'=='和恒等運算符相似,但相等運算符的比較并不嚴格,如果兩個操作數不是同一類型,相等運算符會嘗試進行一些類型轉換,然后再進行比較

當兩個操作數類型相同時,比較規則和恒等運算符規則相同

console.log(undefined == undefined);//true

console.log(10 == 0xa);//true

console.log(NaN == NaN);//false

console.log([] == []);//false

當兩個操作數類型不同時,相等運算符'=='會遵守如下規則:

如果一個值是對象類型,另一值是原始類型,則對象類型會先使用valueOf()轉換成原始值,如果結果還不是原始值,則再使用toString()方法轉換,再進行比較

2.在對象轉換為原始值之后,如果兩個操作數都是字符串,則進行字符串的比較

console.log(new Date() == 'Sat Jun 25 2016 11:07:20 GMT+0800 (中國標準時間)');//true

3.在對象轉換為原始值之后,如果至少有一個操作數不是字符串,則兩個操作數都將通過Number()轉型函數轉換成數字進行數值比較

console.log(true == 1);//true

console.log(true == 0);//false

console.log(false == '1');//false

console.log(false == '0');//true

console.log(true == 'true');//false,相當于1 == NaN

console.log([1] == 1);//true,相當于1 == 1

console.log([1] == '1');//true,相當于'1' == '1'

console.log([] == 0);//true,相當于0 == 0

console.log([] == '0');//false,相當于'' == '0'

console.log([] == true);//false,相當于0 == 1

console.log([1] == true);//true,相當于1 == 1

var a = {

valueOf:function(){

return 1;

},

toString:function(){

return '2';

}

}

console.log( a == '1');//true,相當于1 == 1

var a = {

valueOf:function(){

return {};

},

toString:function(){

return '1';

}

}

console.log( a == 1);//true,相當于1 == 1


四、不相等運算符

不相等運算符(!=)的操作數比較過程與相等運算符相同,結果取反。如果'=='的比較結果是true,則'!='的比較結果是false;如果'=='的比較結果是false,則'!='的比較結果是true

console.log(1 != '1');//false,相當于1 != 1

console.log(true != '1');//false,相當于1 != 1

console.log('true' != 1);//true,相當于NaN != 1

console.log([1] != '1');//false,相當于'1' != '1'

console.log([1] != true);//false,相當于1 != 1


五、大于運算符

大于運算符(>)用于比較兩個操作數,如果第一個操作數大于第二個操作數,則大于運算符的計算結果為true,否則為false

大于運算符的操作數可能是任意類型,然而,只有數字和字符串才能真正執行比較操作,因此那些不是數字和字符串的操作數都將進行類型轉換,類型轉換規則如下:

1.如果操作數是對象,則這個對象將先使用valueOf()轉換成原始值,如果結果還不是原始值,則再使用toString()方法轉換

2.在對象轉換為原始值之后,如果兩個操作數都是字符串,則按照字母表的順序對兩個字符串進行比較,這里提到的字母表順序是指組成這個字符串的16位unicode字符的索引順序

console.log('b' > 'a');//true

console.log('B' > 'a');//false

console.log({} > '[a]');//true,相當于'[object Object]' > '[a]'

console.log({} > '[p]');//false,相當于'[object Object]' > '[p]'

console.log(['a'] > ['b']);//false,相當于'a' > 'b'

console.log([2] > [11]);//true,相當于'2' > '11'

3.在對象轉換為原始值之后,如果至少有一個操作數不是字符串,則兩個操作數都轉換成數字進行比較

console.log(new Date() > 100);//true,相當于1466826928667 > 100

console.log(true > [0]);//true,相當于 1 > 0

console.log(2 > 1);//true

console.log(11 > '2');//true,相當于11 > 2

console.log(NaN > 1);//false

console.log(1 > NaN);//false

console.log({} > true);//false,相當于 NaN > 1

對于數字和字符串來說,加號運算符和比較運算符的行為有所不同,加號運算符更偏愛字符串,如果它的一個操作數是字符串,就進行字符串連接。而比較運算符則更偏愛數字,只有在兩個操作數都是字符串時,才進行字符串的比較

console.log(1 + 2);//3

console.log('1' + '2');//'12'

console.log('1' + 2);//'12',相當于 '1' + '2'

console.log(2 > 1);//true

console.log('2' > '1');//true

console.log('2' > 1);//true,相當于 2 > 1


六、小于等于運算符

小于等于運算符(<=)并不依賴于小于或等于運算符的比較規則,而是遵循大于運算符的比較規則,結果取反。如果'>'的比較結果是true,則'<='的比較結果是false;如果'>'的比較結果是false,則'<='的比較結果是true

console.log(1 <= '0');//false,相當于1 <= 0

console.log(true <= '0');//false,相當于1 <= 0

console.log('true' <= 0);//false,相當于NaN <= 0

console.log([1] <= '0');//false,相當于'1' <= '0'

console.log([0] <= true);//true,相當于0 <= 1

console.log(1 <= 1);//true


七、小于運算符

小于運算符(<)用于比較兩個操作數,如果第一個操作數小于第二個操作數,則小于運算符的計算結果為true,否則為false

小于運算符與大于運算符的類型轉換規則類似,就不再贅述。

八、大于等于運算符

同樣地,大于等于運算符(>=)并不依賴于大于或等于運算符的比較規則,而是遵循小于運算符的比較規則,結果取反。如果'<'的比較結果是true,則'>='的結果是false;如果'<'的比較結果是false,則'>='的結果是true。


以上就是對8種關系運算符的詳細介紹,也舉了不少實例來方便大家理解。其實這些關系運算符就像一架架橋梁,連通著各種各樣的數據,向我們表述它們之間的關系。關系運算符的學習同樣也是一架溝通著我們和Java的橋梁,觀看本站的Java零基礎教程,夯實自己的Java基礎,讓我們的學習之橋堅不可摧!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日日lu| 久久亚洲一级α片 | 欧美午夜寂寞影院安卓列表 | 国产美女免费观看 | 国产一区二区日韩欧美在线 | 欧美午夜场 | 国产亚洲第一精品社区麻豆 | 四虎+网站+影院+网站 | 四虎永久在线精品免费影视 | 欧美成人免费高清二区三区 | 国产一区二区三区免费 | 成人精品在线 | 51精品视频在线一区二区 | 波多野结衣在线一区二区 | 奇米四色在线视频 | 国产成人久久精品激情91 | 9久久免费国产精品特黄 | 中文字幕日韩在线 | 精品无人区乱码一区二区三区手机 | ova熟肉动漫在线 | 久久国产欧美另类久久久 | 奇米影视亚洲春色77777 | 国产四区| 日日噜噜噜夜夜爽爽狠狠图片 | 国产福利在线 | 国产精品一级视频 | 婷婷在线成人免费观看搜索 | 网络色综合久久 | 亚洲专区一路线二 | 成年女人在线观看片免费视频 | 亚洲国产精品aa在线看 | 全部免费毛片免费播放 | 有码中文字幕在线观看 | 日日射日日干 | 擼擼色在线看观看免费 | 老司机午夜精品视频你懂的 | 久草手机视频 | 日日噜噜夜夜狠狠久久丁香 | 欧美日韩一区二区三区毛片 | 免费观看黄色的网站 | a毛片a毛片a视频 |