版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章運(yùn)算符與表達(dá)式遼寧機(jī)電職業(yè)技術(shù)學(xué)院信息工程系軟件教研室遲勇回顧Java有哪些數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則有哪些本章學(xué)習(xí)任務(wù)記憶運(yùn)算符的執(zhí)行優(yōu)先順序表學(xué)習(xí)各種運(yùn)算符的用法本章技能目標(biāo)掌握運(yùn)算符和表達(dá)式的概念了解運(yùn)算符種類及其功能理解表達(dá)式中運(yùn)算符的優(yōu)先級(jí)及其規(guī)律預(yù)習(xí)檢查(1)--預(yù)習(xí)新單詞單詞釋義單詞釋義instanceDataType預(yù)習(xí)檢查(2)a=3,b=2那么a/b=?若b=2.0那么a/b=?計(jì)算下列表達(dá)式的結(jié)果:(a>b)?9:10運(yùn)算符與表達(dá)式-內(nèi)容目錄運(yùn)算符和表達(dá)式的概述運(yùn)算符表達(dá)式3.1運(yùn)算符與表達(dá)式概述運(yùn)算符是對(duì)操作數(shù)進(jìn)行運(yùn)算的符號(hào)。按操作符所操作的數(shù)目來(lái)分,運(yùn)算符可以分為:一元(單目)運(yùn)算符,二元運(yùn)算符和三元運(yùn)算符。其中一元運(yùn)算符分為前置和后置兩種。如果按照運(yùn)算功能來(lái)分,運(yùn)算符可以分為下面幾類:(1)算術(shù)運(yùn)算符(+、-、*、/、%、++、--)(2)位運(yùn)算符(>>、<<、>>>、&、|、^、~)(3)關(guān)系運(yùn)算符(>、<、>=、<=、==、!=)(4)邏輯運(yùn)算符(!、&&、||)(5)賦值運(yùn)算符(=)(6)條件運(yùn)算符(?:)(7)其他運(yùn)算符(動(dòng)態(tài)內(nèi)存分配new運(yùn)算符、數(shù)組下標(biāo)運(yùn)算符[]、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(DataType)、實(shí)例判斷運(yùn)算符instanceof,類或?qū)嵗蓡T操作運(yùn)算符.等)表達(dá)式是常量、變量、運(yùn)算符和方法調(diào)用的組合序列,它執(zhí)行完畢后返回確定的值。運(yùn)算符優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí)運(yùn)算符結(jié)合性1.[]()操作數(shù)++操作數(shù)--2操作數(shù)++操作數(shù)--!~-instanceof3new(type)4*/%左->右5+-左->右6<<>>>>>左->右7<><=>=左->右8==!=左->右9&左->右10^左->右11|左->右12&&左->右13||左->右14?:左->右15=+=-=*=/=%=左->右16&=^=|=<<=>>=>>>=右->左運(yùn)算符與表達(dá)式-內(nèi)容目錄運(yùn)算符和表達(dá)式的概述運(yùn)算符表達(dá)式算術(shù)運(yùn)算符運(yùn)算符用途舉例說(shuō)明++,--自動(dòng)遞增,自動(dòng)遞減++i,j--i先自增1,再參與運(yùn)算;j先參與運(yùn)算再自減1+,-取正、負(fù)號(hào)i=-25將25取負(fù)后賦給i*乘i=15*2將15乘以2后賦給i/除fVar=25.0f/5用5去除25.0,結(jié)果給fVar,為5.0%取余j=5%3將5除3取余,結(jié)果為2+,-加、減x=fVar-8.9將fVar減去8.9,結(jié)果給x 算術(shù)運(yùn)算符分一元(單目)運(yùn)算符和二元(雙目)運(yùn)算符。一元運(yùn)算符只有一個(gè)參與運(yùn)算的操作數(shù),二元運(yùn)算符有兩個(gè)參與運(yùn)算的操作數(shù)。表3-2列出了算術(shù)運(yùn)算符及其用途和相關(guān)說(shuō)明。表3-2 算術(shù)運(yùn)算符算術(shù)運(yùn)算符針對(duì)不同數(shù)據(jù)類型操作數(shù)的運(yùn)算結(jié)果符合數(shù)據(jù)類型轉(zhuǎn)換規(guī)則(見(jiàn)表2-8)。算術(shù)運(yùn)算符示例(1-1)容易忽略的錯(cuò)誤解釋inta=7/2;a=3而不是3.0doubled=7/2.0;d=3.5;inta=9L/3;9L/3返回值是long型,不能賦值給int型變量afloatf=4F+5.0;4F+5相當(dāng)于4F+5D,返回值是double型1)一元算術(shù)運(yùn)算符一元算術(shù)運(yùn)算符共有四種(自增++,自減--,取正值+,取負(fù)值-),涉及的操作數(shù)只有一個(gè)。其中按++,--運(yùn)算符前置和后置來(lái)分類,只有四種情況,(假設(shè)有變量x)分別為:x++,x--前置運(yùn)算,表示x先參與表達(dá)式的運(yùn)算,然后再自增(減)1。++x,--x后置運(yùn)算,表示x先自增(減)1,然后再參與表達(dá)式的運(yùn)算。例3-1:自增減一元運(yùn)算符示例表3-3列舉了算術(shù)運(yùn)算中常見(jiàn)的錯(cuò)誤和容易忽略的盲點(diǎn)算術(shù)運(yùn)算符示例(1-2)2)二元算術(shù)運(yùn)算符二元算術(shù)運(yùn)算符共有五種(+,-,*,/,取模%),涉及的操作數(shù)有兩個(gè)。 取模運(yùn)算(%)和整除運(yùn)算(/)需要注意的是:它的操作數(shù)可以是浮點(diǎn)數(shù),如果其中一個(gè)操作數(shù)是浮點(diǎn)數(shù),那么運(yùn)算結(jié)果也是浮點(diǎn)數(shù);如果兩個(gè)操作數(shù)都是泛整型,那么運(yùn)算結(jié)果也是整型。例3-2:計(jì)算表達(dá)式的值例3-1:自增減一元運(yùn)算符示例Test.javapublicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=2; System.out.println(""+x++);//輸出x值為2 System.out.println(""+(++x));//輸出x值為4 }}【代碼說(shuō)明】此程序的代碼可以理解為:System.out.println(""+x);//輸出x值為2x++;//x值為3++x;//x值為4System.out.println(“”+x);//輸出x值為4例3-2:計(jì)算表達(dá)式的值publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta=5,b=2; doublec=5.0,d=2.0; System.out.println(""+a/b); System.out.println(""+a%b); System.out.println(""+c/d); System.out.println(""+c%d); }}【運(yùn)行結(jié)果】212.51.0【代碼說(shuō)明】1)若表達(dá)式a/b的除號(hào)兩邊的操作數(shù)都為整形,則“/”運(yùn)算符代表整除;2)若表達(dá)式a/b的除號(hào)兩邊的操作數(shù)有一個(gè)為浮點(diǎn)型,則運(yùn)算結(jié)果也為浮點(diǎn)型;3)另外注意,表達(dá)式a%b取模運(yùn)算符兩邊的操作數(shù)可以為浮點(diǎn)型。改變算術(shù)運(yùn)算符優(yōu)先級(jí)若a=5、b=2、c=1,求c+2*a++%--d*3的值?相當(dāng)于(c+(2*a++)%(--b)*3)=4
注意:1)Java中沒(méi)有冪運(yùn)算符,而使用Math類的靜態(tài)方法pow()來(lái)實(shí)現(xiàn);2)Java中的Math提供了大量的數(shù)學(xué)方法和常量,如求平方根和圓周率π等,使用時(shí)的調(diào)用格式很簡(jiǎn)單,如求平方根可以用Math.sqrt(double),表示圓周率可以用Math.PI。
3.2.2關(guān)系運(yùn)算符運(yùn)算符用途舉例說(shuō)明>表達(dá)式1>表達(dá)式2i>100i大于100,返回true,否則,返回false<表達(dá)式1<表達(dá)式2i<100i小于100,返回true,否則,返回false>=表達(dá)式1>=表達(dá)式2i>=128i大于等于128,返回true,否則,返回false<=表達(dá)式1<=表達(dá)式2i<=10i小于等于10,返回true,否則,返回false==表達(dá)式1==表達(dá)式2i==81i等于大于81,返回true,否則,返回false?。奖磉_(dá)式1?。奖磉_(dá)式2i?。?i不等于9,返回true,否則,返回false表3-4列出了關(guān)系運(yùn)算符及其用途和相關(guān)說(shuō)明。表3-4 關(guān)系運(yùn)算符3.2.3位運(yùn)算符運(yùn)算符用途舉例說(shuō)明~按位取反~6401111110按位取反,結(jié)果10000001<<左移64<<101000000左移1位得100000000>>右移64>>201000000右移2位得00010000>>>無(wú)符號(hào)右移126>>>101111110右移1位得00111111&按位與126&6401111110與01000000按位與,結(jié)果01000000^按位異或126^6401111110與01000000按位異或,結(jié)果00111110|按位或126|6401111110與01000000按位或,結(jié)果01111110Java的移位運(yùn)算有:左移位運(yùn)算符<<,右移位運(yùn)算符>>,無(wú)符號(hào)右移位運(yùn)算符>>>,位運(yùn)算操作數(shù)為整型。表3-5列出了位運(yùn)算符及其用途和相關(guān)說(shuō)明。表3-5位運(yùn)算符補(bǔ)碼的知識(shí)原碼反碼補(bǔ)碼原碼:是數(shù)值轉(zhuǎn)化成的對(duì)應(yīng)二進(jìn)制數(shù)。(如十進(jìn)制32的原碼為100000)反碼:原碼的按位取反。補(bǔ)碼:反碼加1。正數(shù)的原碼、反碼和補(bǔ)碼相同負(fù)數(shù)的反碼為該數(shù)的絕對(duì)值原碼按位取反,補(bǔ)碼為反碼加1,如3-6表所示正、負(fù)數(shù)的原碼、反碼和補(bǔ)碼正數(shù)126負(fù)數(shù)-126原碼0111,11101111,1110反碼0111,11101000,0001補(bǔ)碼0111,11101000,0010遼寧機(jī)電職業(yè)技術(shù)學(xué)院DesignedByChiyong?2008表3-6 正、負(fù)數(shù)的原碼、反碼和補(bǔ)碼左移位運(yùn)算(如X<<n)右移位運(yùn)算(如X>>n)相當(dāng)于相當(dāng)于移位運(yùn)算符(1-1)(1)左移位運(yùn)算符<<(帶符號(hào)左移位運(yùn)算符)左移位運(yùn)算時(shí),數(shù)值的各位向左移動(dòng),高位左移后溢出,舍棄,右側(cè)補(bǔ)0。
例如:32<<1,0010,0000左移1位得0100,0000,為正數(shù)64。(2)右移位運(yùn)算符>>(帶符號(hào)右移位運(yùn)算符)右移位運(yùn)算時(shí),數(shù)值的各位向右移動(dòng),低位右移后溢出,舍棄,左側(cè)高位補(bǔ)入原來(lái)高位的值。
例如:-126>>1,1000,0010右移1位得1100,0001,為負(fù)數(shù)-63。(3)無(wú)符號(hào)右移位運(yùn)算符>>>(添零右位移運(yùn)算符)無(wú)符號(hào)右移位運(yùn)算時(shí),數(shù)值的各位向右移動(dòng),低位右移后溢出,舍棄,左側(cè)高位補(bǔ)入0(這是與>>不同之處)。
例如:-126>>>1,1000,0010右移1位得0100001。 從以上介紹可以推導(dǎo)出移位運(yùn)算規(guī)律:表3-7移位運(yùn)算規(guī)律移位運(yùn)算符(1-2)補(bǔ)碼為:1100,0001反碼為:1011,1110原碼為:1011,1111所以結(jié)果為-63,符合表3-7的移位運(yùn)算規(guī)律示例:求解-126>>1根據(jù)表3-7速算,結(jié)果為-63,那么結(jié)果是如何推導(dǎo)出來(lái)的呢?已知-126的補(bǔ)碼是1000,0010(見(jiàn)表3-6),1000,0010>>1得1100,0001想知道此結(jié)果的原值,需再轉(zhuǎn)換為原碼,轉(zhuǎn)換規(guī)則仍為“取反加一” 試一試:求解-127>>1是多少?這無(wú)法使用運(yùn)算規(guī)律來(lái)速算,只能推導(dǎo)。
想一想:Java中沒(méi)有無(wú)符號(hào)左移運(yùn)算符,讀者可以自行考慮一下為什么?3.2.4邏輯運(yùn)算符邏輯運(yùn)算符用于連接關(guān)系表達(dá)式,對(duì)關(guān)系表達(dá)式的結(jié)果進(jìn)行邏輯運(yùn)算,如(關(guān)系表達(dá)式1)&&(關(guān)系表達(dá)式2)表3-8列出了邏輯運(yùn)算符及其使用方法。運(yùn)算符用途舉例說(shuō)明!取反運(yùn)算!(255>125)比較表達(dá)式為true,取反后結(jié)果返回false&&邏輯與運(yùn)算(9>6)&&(100>125)右表達(dá)式為false,結(jié)果返回false(其一為假,即為假)||邏輯或運(yùn)算(9>6)||(100>125)左表達(dá)式為true,結(jié)果為true(其一為真,即為真)表3-8邏輯運(yùn)算符例3-3:觀測(cè)“短路”運(yùn)算符的效果注意:Java中的&&和||運(yùn)算符采用了電工學(xué)中的“短路”方式進(jìn)行運(yùn)算例3-2:計(jì)算表達(dá)式的值publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta=2,b=1; System.out.println(""+(a>b||++b>=a)); System.out.println(b); }}【運(yùn)行結(jié)果】true1【代碼說(shuō)明】因?yàn)檫壿嫳磉_(dá)式中a>b的值為true,因此整體的表達(dá)式就為true,右側(cè)的++b>=a表達(dá)式不再參與運(yùn)算,所以b的值仍為13.2.5賦值運(yùn)算符賦值運(yùn)算符分為“=”號(hào)和復(fù)合賦值運(yùn)算符兩種?!?”號(hào)是最簡(jiǎn)單的賦值運(yùn)算符,其左邊是變量,右邊為表達(dá)式,
inta=3+5; //正確 intb=3.0+5; //錯(cuò)誤,右值為8.0,是double型 intc=(int)(3.0+5);//正確,c為8 doubled=a+6; //正確 賦值時(shí),應(yīng)遵循數(shù)據(jù)類型轉(zhuǎn)換規(guī)則(見(jiàn)本書(shū)第二章2.3節(jié))。賦值運(yùn)算符“=”還可以同其他運(yùn)算符結(jié)合,實(shí)現(xiàn)運(yùn)算和賦值雙重功能,簡(jiǎn)稱復(fù)合賦值運(yùn)算符。組合方式為: <變量><其他運(yùn)算符>=<表達(dá)式>; inti=5; i+=21;相當(dāng)于執(zhí)行:i=i+21;結(jié)果為i=5+21。3.2.6條件運(yùn)算符條件運(yùn)算符(?:)是唯一的一個(gè)三元運(yùn)算符,形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3表達(dá)式1是關(guān)系或布爾表達(dá)式,返回值為boolean值,如果表達(dá)式1的值為true,則整體表達(dá)式的值為表達(dá)式2的值;如果如果表達(dá)式2值為false,則整體表達(dá)式的值為表達(dá)式3的值。 示例:
inta=1800; intsalary=a>1600?2000:1900; //因?yàn)閍>1600結(jié)果為true,所以結(jié)果s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GBT 13025.1-2012制鹽工業(yè)通 用試驗(yàn)方法 粒度的測(cè)定專題研究報(bào)告
- 《GB-T 39436-2020病媒生物防制操作規(guī)程 地鐵》專題研究報(bào)告
- 《GB-T 10987-2009光學(xué)系統(tǒng) 參數(shù)的測(cè)定》專題研究報(bào)告
- 云安全運(yùn)維服務(wù)協(xié)議
- 智能家居行業(yè)智能家電測(cè)試工程師崗位招聘考試試卷及答案
- 2025年10月12日蕪湖弋江社區(qū)工作者面試真題及答案解析
- 2025年柔性制造單元(FMC)合作協(xié)議書(shū)
- 腸道菌群與免疫健康的關(guān)系
- 2025年食品冷凍機(jī)械項(xiàng)目發(fā)展計(jì)劃
- 風(fēng)濕病的康復(fù)指導(dǎo)
- 2025四川航天川南火工技術(shù)有限公司招聘考試題庫(kù)及答案1套
- 2025年度皮膚科工作總結(jié)及2026年工作計(jì)劃
- 冠狀動(dòng)脈微血管疾病診斷和治療中國(guó)專家共識(shí)(2023版)
- 2024年春季學(xué)期中國(guó)文學(xué)基礎(chǔ)#期末綜合試卷-國(guó)開(kāi)(XJ)-參考資料
- 軍隊(duì)物資工程服務(wù)采購(gòu)產(chǎn)品分類目錄
- 廣西柳州市2023-2024學(xué)年八年級(jí)上學(xué)期期末質(zhì)量監(jiān)測(cè)地理試卷
- 《天文教學(xué)設(shè)計(jì)》教學(xué)設(shè)計(jì)
- 大學(xué)通用俄語(yǔ)1
- GB/T 24002.1-2023環(huán)境管理體系針對(duì)環(huán)境主題領(lǐng)域應(yīng)用GB/T 24001管理環(huán)境因素和應(yīng)對(duì)環(huán)境狀況的指南第1部分:通則
- GB/T 16938-2008緊固件螺栓、螺釘、螺柱和螺母通用技術(shù)條件
- C語(yǔ)言課程設(shè)計(jì)-商品信息管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論