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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 看這些實例,參透算術運算符

看這些實例,參透算術運算符

更新時間:2020-10-13 17:18:57 來源:動力節點 瀏覽1193次

Java中的算術操作主要通過算術運算符來實現,算術運算符包括一元算術運算符和二元算術運算符兩種。下面就通過大量實例一一為大家介紹這兩種算術運算符的用法。


一、一元算術運算符

一元算術運算符用于一個單獨的操作數,并產生一個新值。在Java中,一元運算符具有很高的優先級,而且都是右結合(right-associative)

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


1.一元加(+)

一元加運算符以一個加號(+)表示,放在數值前面,對數值不會產生任何影響

var num = 25;

num = +num; //25

在對非數值應用一元加運算符時,會調用Number()轉型函數對這個值進行轉換

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()前面使用一元加符號,可以把日期字符串,轉換為日期毫秒數

console.log(new Date());//on Jul 11 2016 20:25:54 GMT+0800 (中國標準時間)

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


2.一元減(-)

一元減運算符主要用于表示負數

var num = 25;

num = -num;//-25

當一元減運算符用于非數值時,會對該值使用Number()轉型函數進行轉換,再將得到的數值轉換成負數

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

一元加和一元減運算符主要用于基本的算術運算,也可以用于轉換數據類型。


3.遞增(++)

遞增++運算符對其操作數進行增量(加1)操作,操作數是一個左值(lvalue)(變量、數組元素或對象屬性)。運算符通過Number()轉型函數將操作數轉換為數字,然后給數字加1,并將加1后的數值重新賦值給變量、數字元素或者對象屬性

var age = 29;

++age;

//相當于

var age = 29;

age = age +1;

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

不管是前增量還是后增量,這個運算符通常用在for循環中,用于控制循環內的計數器

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

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

++x并不總是和x = x+1完全一樣,++運算符從不進行字符串連接操作,它總是會將操作數轉換為數字并增1

var x = '1';

++x;//2

var x = '1';

x = x + 1;//'11'


4.遞減(--)

遞減--運算符的操作數也是一個左值,它通過Number()轉型函數把操作數轉換為數字,然后減1,并將計算后的值重新賦值給操作數

和遞增++運算符一樣,遞減--運算符的返回值依賴于它相對操作數的位置,當遞減運算符在操作數之前,操作數減1并返回減1之后的值。當遞減運算符在操作數之后,操作數減1并返回減1之前的值

var age = 29;

--age;

//相當于

var age = 29;

age = age - 1;

前增量操作符與執行語句優先級相同,整個語句會從左向右求值

var num1 = 2;

var num2 = 20;

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

var num4 = num1 + num2;//21

后增量操作符在包含它們的語句被求值之后才執行

var num1 = 2;

var num2 = 20;

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

var num4 = num1 + num2;//21

在涉及++和--運算符時,如果將其用作后綴表達式,它和表達式應該同一行。否則,行尾將填補分號,同時++或--將作為下一行代碼的前綴操作符并與之一起解析

x

--

y

Java將其解析為:

x;--y;

而代碼的本意是:

x--;y;


二、二元算術運算符

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


1.加法(+)

在多數程序設計語言中,加法通常是簡單的數字運算符,但在ECMAScript中,加法運算有大量的特殊行為,不僅可以進行數值加法運算,也可以進行字符串連接

加法運算遵循如下規則:

1)如果其中一個操作數是對象,則對象會轉換為原始值:日期對象通過toString()方法執行轉換,其他對象通過valueOf()方法執行轉換。由于多數對象valueOf()方法無法返回一個原始值,于是會通過toString()方法來執行轉換

2)在進行了對象到原始值的轉換后,如果其中一個操作數是字符串的話,另一個操作數也會轉換成字符串,進行字符串連接

3)否則,兩個操作數都將轉換成數字或NaN,進行加法操作

//單數值數組和valueOf()返回值為數值的自定義對象會轉換為數值

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

var o = {

valueOf: function(){

return -1;

}

}

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

//其他原生對象則轉換為字符串

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 (中國標準時間)'

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

如果進行算術加法運算,undefined轉換為NaN,null轉換為0,false轉換為0,true轉換為1

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

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

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

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

如果進行字符串連接,undefined轉換為'undefined',null轉換為'null',false轉換為'false',true轉換為'true'

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

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

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

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

因此,利用加號運算符的特性,可以利用''+任意類型值轉換為字符串

在數字加法運算中,Infinity和帶符號的0的處理較為特殊

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

Infinity + (-Infinity);//NaN

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


2.減法(-)

相對于加法,減法就簡單的多,只涉及到數字的減法運算。使用Number()轉型函數將非數值類型轉換為數值或NaN

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

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

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

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

加法有一個特殊之處,在于時間Date對象進行加法運算時使用toString()轉換為字符串,而在其他數學運算,包括減法、乘法、除法、求余等運算中,都是使用Number()轉換函數將時間Date對象使用valueOf()轉換為數字

console.log(new Date() + 1);//'Thu Jun 16 2016 11:11:49 GMT+0800 (中國標準時間)1'

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

undefined轉換為NaN,null轉換為0,false轉換為0,true轉換為1

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

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

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

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


3.乘法(*)

乘法操作符由一個星號(*)表示,用于計算兩個數值的乘積,會通過Number()轉型函數將非數值類型轉換為數值或NaN

+ Infinity * 0;//NaN

- Infinity * 0;//NaN

Infinity * 非0數值;//Infinity或-Infinity

Infinity * Infinity;//Infinity


4.除法(/)

除法操作符由一個斜線(/)表示,執行第一個操作數除以第二個操作數的運算,也會通過Number()轉型函數將非數值類型轉換為數值或NaN

Infinity / Infinity;//NaN

0 / 0;//NaN

非0數值 / 0;//Infinity或-Infinity

Infinity / 0;//Infinity

Infinity / 非0數值;//Infinity


5.求模(%)

求模(余數)操作符是由一個百分號(%)表示,是第一個操作數除以第二個操作數的余數

//r是余數,n是被除數,d是除數,

//q是整數,在n/d為負時為負,在n/d為正時為正,它應該在不超過n和d的商的前提下盡可能大

r = n - (d * q)

求模結果與第一個操作數的符號保持一致

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

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

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

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

被除數是Infinity,或除數是0,則求模結果是NaN

Infinity % 0 = NaN

Infinity % Infinity = NaN

Infinity % 非0數值 = NaN

非0數值 % 0 = NaN

在多數編程語言中,求模運算符只接受整數為操作數,而在ECMAScript中,還接受浮點操作數,但由于浮點數不是精確的值,無法得到完全準確的結果

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


總的來說,算術運算符相對于我們數學中的算術來說其實是大同小異的,只是部分運算規則發生了變化,殊途同歸,對于有一定數學基礎的同學來說,學好算術運算符指日可待。當然,如果看了本站的Java零基礎教程中對算術運算符的講解那更是如虎添翼,更上層樓。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩精品视频观看 | 精品一区二区三区在线视频观看 | 真人女人一级毛片免费视频观看 | 久久精品视频日本 | 天天干天天操天天玩 | 久久精品免费在线观看 | 免费一级成人免费观看 | 国产中的精品一区的 | 波多野结衣免费一区二区三区香蕉 | 国产精品久久久久久麻豆一区 | 欧美激情二区 | 2020亚洲欧美日韩在线观看 | 在线久综合色手机在线播放 | 九九在线免费视频 | 香蕉网站男人网站 | 69精品久久久久 | 精品久久久久久免费影院 | 91精品国产麻豆国产自产在线 | 欧美麻豆久久久久久中文 | 国产福利视频一区美女 | 国产精品1 | 国产欧美一区二区三区在线看 | 水蜜桃网站 | 国产成人性毛片aaww | 免费视频爱爱太爽了 | 国产成 人 综合 亚洲绿色 | 四虎影视国产永久免费 | 亚洲精品久久婷婷爱久久婷婷 | 99色综合| 免费高清在线影片一区 | 综合久久久久久久综合网 | 一级毛片网 | 热99re国产久热在线 | 日韩经典一区 | 第四色激情网 | 日本免费三区 | 日韩精品一区二区三区视频 | 亚洲天天做夜夜做天天欢人人 | 一级骚片 | 国产精亚洲视频 | 九九精品热线免费观看6 |