黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 看這些實(shí)例,參透算術(shù)運(yùn)算符

看這些實(shí)例,參透算術(shù)運(yùn)算符

更新時(shí)間:2020-10-13 17:18:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1222次

Java中的算術(shù)操作主要通過(guò)算術(shù)運(yùn)算符來(lái)實(shí)現(xiàn),算術(shù)運(yùn)算符包括一元算術(shù)運(yùn)算符和二元算術(shù)運(yùn)算符兩種。下面就通過(guò)大量實(shí)例一一為大家介紹這兩種算術(shù)運(yùn)算符的用法。


一、一元算術(shù)運(yùn)算符

一元算術(shù)運(yùn)算符用于一個(gè)單獨(dú)的操作數(shù),并產(chǎn)生一個(gè)新值。在Java中,一元運(yùn)算符具有很高的優(yōu)先級(jí),而且都是右結(jié)合(right-associative)

一元算術(shù)運(yùn)算符包括一元加法(+)、一元減法(-)、遞增(++)和遞減(--)


1.一元加(+)

一元加運(yùn)算符以一個(gè)加號(hào)(+)表示,放在數(shù)值前面,對(duì)數(shù)值不會(huì)產(chǎn)生任何影響

var num = 25;

num = +num; //25

在對(duì)非數(shù)值應(yīng)用一元加運(yùn)算符時(shí),會(huì)調(diào)用Number()轉(zhuǎn)型函數(shù)對(duì)這個(gè)值進(jìn)行轉(zhuǎn)換

var s1 = '01';

var s2 = '1.1';

var s3 = 'z';

var b = false;

var f = 1.1;

var o = {

valueOf:function(){

return -1;

}

};

s1 = +s1;//1

s2 = +s2;//1.1

s3 = +s3;//NaN

b = +b;//0

f = +f;//1.1

o = +o;//-1

在new Date()前面使用一元加符號(hào),可以把日期字符串,轉(zhuǎn)換為日期毫秒數(shù)

console.log(new Date());//on Jul 11 2016 20:25:54 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)

console.log(+new Date());//1468239954076


2.一元減(-)

一元減運(yùn)算符主要用于表示負(fù)數(shù)

var num = 25;

num = -num;//-25

當(dāng)一元減運(yùn)算符用于非數(shù)值時(shí),會(huì)對(duì)該值使用Number()轉(zhuǎn)型函數(shù)進(jìn)行轉(zhuǎn)換,再將得到的數(shù)值轉(zhuǎn)換成負(fù)數(shù)

var s1 = '01';

var s2 = '1.1';

var s3 = 'z';

var b = false;

var f = 1.1;

var o = {

valueOf:function(){

return -1;

}

};

s1 = -s1;//-1

s2 = -s2;//-1.1

s3 = -s3;//NaN

b = -b;//0

f = -f;//-1.1

o = -o;//1

一元加和一元減運(yùn)算符主要用于基本的算術(shù)運(yùn)算,也可以用于轉(zhuǎn)換數(shù)據(jù)類(lèi)型。


3.遞增(++)

遞增++運(yùn)算符對(duì)其操作數(shù)進(jìn)行增量(加1)操作,操作數(shù)是一個(gè)左值(lvalue)(變量、數(shù)組元素或?qū)ο髮傩?。運(yùn)算符通過(guò)Number()轉(zhuǎn)型函數(shù)將操作數(shù)轉(zhuǎn)換為數(shù)字,然后給數(shù)字加1,并將加1后的數(shù)值重新賦值給變量、數(shù)字元素或者對(duì)象屬性

var age = 29;

++age;

//相當(dāng)于

var age = 29;

age = age +1;

遞增++運(yùn)算符的返回值依賴于它相對(duì)于操作數(shù)的位置。當(dāng)運(yùn)算符在操作數(shù)之前,稱為前增量(pre-increment)運(yùn)算符,它對(duì)操作數(shù)進(jìn)行增量計(jì)算,并返回計(jì)算后的值。當(dāng)運(yùn)算符在操作數(shù)之后,稱為后增量(post-increment)運(yùn)算符,它對(duì)操作數(shù)進(jìn)行增量計(jì)算,但返回未做增量計(jì)算的(unincremented)值

不管是前增量還是后增量,這個(gè)運(yùn)算符通常用在for循環(huán)中,用于控制循環(huán)內(nèi)的計(jì)數(shù)器

var i = 1, j = ++i;//i=2 j=2

var i = 1, j = i++;//i=2 j=1

++x并不總是和x = x+1完全一樣,++運(yùn)算符從不進(jìn)行字符串連接操作,它總是會(huì)將操作數(shù)轉(zhuǎn)換為數(shù)字并增1

var x = '1';

++x;//2

var x = '1';

x = x + 1;//'11'


4.遞減(--)

遞減--運(yùn)算符的操作數(shù)也是一個(gè)左值,它通過(guò)Number()轉(zhuǎn)型函數(shù)把操作數(shù)轉(zhuǎn)換為數(shù)字,然后減1,并將計(jì)算后的值重新賦值給操作數(shù)

和遞增++運(yùn)算符一樣,遞減--運(yùn)算符的返回值依賴于它相對(duì)操作數(shù)的位置,當(dāng)遞減運(yùn)算符在操作數(shù)之前,操作數(shù)減1并返回減1之后的值。當(dāng)遞減運(yùn)算符在操作數(shù)之后,操作數(shù)減1并返回減1之前的值

var age = 29;

--age;

//相當(dāng)于

var age = 29;

age = age - 1;

前增量操作符與執(zhí)行語(yǔ)句優(yōu)先級(jí)相同,整個(gè)語(yǔ)句會(huì)從左向右求值

var num1 = 2;

var num2 = 20;

var num3 = --num1 + num2;//21

var num4 = num1 + num2;//21

后增量操作符在包含它們的語(yǔ)句被求值之后才執(zhí)行

var num1 = 2;

var num2 = 20;

var num3 = num1-- + num2;//22

var num4 = num1 + num2;//21

在涉及++和--運(yùn)算符時(shí),如果將其用作后綴表達(dá)式,它和表達(dá)式應(yīng)該同一行。否則,行尾將填補(bǔ)分號(hào),同時(shí)++或--將作為下一行代碼的前綴操作符并與之一起解析

x

--

y

Java將其解析為:

x;--y;

而代碼的本意是:

x--;y;


二、二元算術(shù)運(yùn)算符

二元算術(shù)運(yùn)算符包括加法(+)、減法(-)、乘法(*)、除法(/)和求余(%)


1.加法(+)

在多數(shù)程序設(shè)計(jì)語(yǔ)言中,加法通常是簡(jiǎn)單的數(shù)字運(yùn)算符,但在ECMAScript中,加法運(yùn)算有大量的特殊行為,不僅可以進(jìn)行數(shù)值加法運(yùn)算,也可以進(jìn)行字符串連接

加法運(yùn)算遵循如下規(guī)則:

1)如果其中一個(gè)操作數(shù)是對(duì)象,則對(duì)象會(huì)轉(zhuǎn)換為原始值:日期對(duì)象通過(guò)toString()方法執(zhí)行轉(zhuǎn)換,其他對(duì)象通過(guò)valueOf()方法執(zhí)行轉(zhuǎn)換。由于多數(shù)對(duì)象valueOf()方法無(wú)法返回一個(gè)原始值,于是會(huì)通過(guò)toString()方法來(lái)執(zhí)行轉(zhuǎn)換

2)在進(jìn)行了對(duì)象到原始值的轉(zhuǎn)換后,如果其中一個(gè)操作數(shù)是字符串的話,另一個(gè)操作數(shù)也會(huì)轉(zhuǎn)換成字符串,進(jìn)行字符串連接

3)否則,兩個(gè)操作數(shù)都將轉(zhuǎn)換成數(shù)字或NaN,進(jìn)行加法操作

//單數(shù)值數(shù)組和valueOf()返回值為數(shù)值的自定義對(duì)象會(huì)轉(zhuǎn)換為數(shù)值

console.log(1 + []);//1

var o = {

valueOf: function(){

return -1;

}

}

console.log(1 + o);//0

//其他原生對(duì)象則轉(zhuǎn)換為字符串

console.log(1 + {});//'1[object Object]'

console.log(1 + [1,2]);//'11,2'

console.log(1 + new Date());//'1Thu Jun 16 2016 10:27:13 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)'

console.log(1 + /0/);//'1/0/'

如果進(jìn)行算術(shù)加法運(yùn)算,undefined轉(zhuǎn)換為NaN,null轉(zhuǎn)換為0,false轉(zhuǎn)換為0,true轉(zhuǎn)換為1

console.log(undefined + undefined);//NaN

console.log(null + null);//0

console.log(false + false);//0

console.log(true + true);//2

如果進(jìn)行字符串連接,undefined轉(zhuǎn)換為'undefined',null轉(zhuǎn)換為'null',false轉(zhuǎn)換為'false',true轉(zhuǎn)換為'true'

console.log('' + undefined);//'undefined'

console.log('' + null);//'null'

console.log('' + false);//'false'

console.log('' + true);//'true'

因此,利用加號(hào)運(yùn)算符的特性,可以利用''+任意類(lèi)型值轉(zhuǎn)換為字符串

在數(shù)字加法運(yùn)算中,Infinity和帶符號(hào)的0的處理較為特殊

Number.MAX_VALUE + Number.MAX_VALUE === Infinity;//true

Infinity + (-Infinity);//NaN

+0 + (-0) === +0;//true


2.減法(-)

相對(duì)于加法,減法就簡(jiǎn)單的多,只涉及到數(shù)字的減法運(yùn)算。使用Number()轉(zhuǎn)型函數(shù)將非數(shù)值類(lèi)型轉(zhuǎn)換為數(shù)值或NaN

console.log(1 - {});//NaN

console.log(1 - [1,2]);//NaN

console.log(1 - /0/);//NaN

console.log(1 - []);//1

加法有一個(gè)特殊之處,在于時(shí)間Date對(duì)象進(jìn)行加法運(yùn)算時(shí)使用toString()轉(zhuǎn)換為字符串,而在其他數(shù)學(xué)運(yùn)算,包括減法、乘法、除法、求余等運(yùn)算中,都是使用Number()轉(zhuǎn)換函數(shù)將時(shí)間Date對(duì)象使用valueOf()轉(zhuǎn)換為數(shù)字

console.log(new Date() + 1);//'Thu Jun 16 2016 11:11:49 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)1'

console.log(new Date() - 1);//1466046941641

undefined轉(zhuǎn)換為NaN,null轉(zhuǎn)換為0,false轉(zhuǎn)換為0,true轉(zhuǎn)換為1

console.log(1 - undefined);//NaN

console.log(1 - null);//1

console.log(1 - false);//1

console.log(1 - true);//0


3.乘法(*)

乘法操作符由一個(gè)星號(hào)(*)表示,用于計(jì)算兩個(gè)數(shù)值的乘積,會(huì)通過(guò)Number()轉(zhuǎn)型函數(shù)將非數(shù)值類(lèi)型轉(zhuǎn)換為數(shù)值或NaN

+ Infinity * 0;//NaN

- Infinity * 0;//NaN

Infinity * 非0數(shù)值;//Infinity或-Infinity

Infinity * Infinity;//Infinity


4.除法(/)

除法操作符由一個(gè)斜線(/)表示,執(zhí)行第一個(gè)操作數(shù)除以第二個(gè)操作數(shù)的運(yùn)算,也會(huì)通過(guò)Number()轉(zhuǎn)型函數(shù)將非數(shù)值類(lèi)型轉(zhuǎn)換為數(shù)值或NaN

Infinity / Infinity;//NaN

0 / 0;//NaN

非0數(shù)值 / 0;//Infinity或-Infinity

Infinity / 0;//Infinity

Infinity / 非0數(shù)值;//Infinity


5.求模(%)

求模(余數(shù))操作符是由一個(gè)百分號(hào)(%)表示,是第一個(gè)操作數(shù)除以第二個(gè)操作數(shù)的余數(shù)

//r是余數(shù),n是被除數(shù),d是除數(shù),

//q是整數(shù),在n/d為負(fù)時(shí)為負(fù),在n/d為正時(shí)為正,它應(yīng)該在不超過(guò)n和d的商的前提下盡可能大

r = n - (d * q)

求模結(jié)果與第一個(gè)操作數(shù)的符號(hào)保持一致

console.log(5 % 2);//1

console.log(5 % -2);//1

console.log(-5 % 2);//-1

console.log(-5 % -2);//-1

被除數(shù)是Infinity,或除數(shù)是0,則求模結(jié)果是NaN

Infinity % 0 = NaN

Infinity % Infinity = NaN

Infinity % 非0數(shù)值 = NaN

非0數(shù)值 % 0 = NaN

在多數(shù)編程語(yǔ)言中,求模運(yùn)算符只接受整數(shù)為操作數(shù),而在ECMAScript中,還接受浮點(diǎn)操作數(shù),但由于浮點(diǎn)數(shù)不是精確的值,無(wú)法得到完全準(zhǔn)確的結(jié)果

console.log(6.5 % 2.1);//0.19999999999999973


總的來(lái)說(shuō),算術(shù)運(yùn)算符相對(duì)于我們數(shù)學(xué)中的算術(shù)來(lái)說(shuō)其實(shí)是大同小異的,只是部分運(yùn)算規(guī)則發(fā)生了變化,殊途同歸,對(duì)于有一定數(shù)學(xué)基礎(chǔ)的同學(xué)來(lái)說(shuō),學(xué)好算術(shù)運(yùn)算符指日可待。當(dāng)然,如果看了本站的Java零基礎(chǔ)教程中對(duì)算術(shù)運(yùn)算符的講解那更是如虎添翼,更上層樓。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: free 中国性xxxxhd | 羞羞影院体验区 | 午夜视频在线观看视频 | 亚洲视频精品在线观看 | 亚洲色图在线观看视频 | 久久狠狠| 在线观看成人网 | 日韩黄色小视频 | 久久精品波多野结衣 | 97夜夜操 | 国产视频一区二区在线观看 | 日韩精品一区二区三区中文3d | 521色香蕉网在线观看免费 | 婷婷四房综合激情五月性色 | 亚洲日本视频在线观看 | 波多野结衣三区 | 欧美成人观看视频在线 | 色综合天天综合网看在线影院 | 毛片免费毛片一级jjj毛片 | 成人毛片免费免费 | 成年人在线播放 | 射综合网 | 天天干天天澡 | 性欧美乱又伦 | 国产一区二区三区亚洲欧美 | 国产成人啪精品视频免费网站软件 | 视频一本大道香蕉久在线播放 | 五月开心六月伊人色婷婷 | 国产欧美日韩高清专区手机版 | 一级毛片免费观看不卡视频 | 丝袜美女足交 | 美女被啪全免视频软件 | 国产一区二区免费播放 | 欧美乱爱 | 国产精品手机在线亚洲 | 日韩欧美综合在线 | 久久精品一区二区三区不卡牛牛 | 日韩在线播放全免费 | 国内外成人免费视频 | 久久国产精品1区2区3区网页 | 欧美v日本|