java中運算符、表達式與語句.ppt_第1頁
java中運算符、表達式與語句.ppt_第2頁
java中運算符、表達式與語句.ppt_第3頁
java中運算符、表達式與語句.ppt_第4頁
java中運算符、表達式與語句.ppt_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

2019/7/11,1,第3章 運算符、表達式與語句,本章導讀 算術(shù)運算符和算術(shù)表達式 關系運算符與關系表達式 邏輯運算符與邏輯表達式 賦值運算符與賦值表達式 移位運算符 位運算符和條件運算符 instanceof 運算符 一般表達式 語句概述 分支語句、循環(huán)語句和跳轉(zhuǎn)語句,2019/7/11,2,3.1 算術(shù)運算符和算術(shù)表達式,(1)加減運算符 加減運算的運算符號分別為+和,是雙目運算符。加減運算的結(jié)合性是從左到右。加減運算的操作元是整型或浮點型數(shù)據(jù),加減運算符的優(yōu)先級是4級。 (2)乘、除和求余運算符 乘、除和求余運算的運算符號為*、/、%,都是雙目運算符。 *、/、% 運算符的結(jié)合性是從左到右,例如:2*3/8,先計算2*3,然后再將得到的結(jié)果除以8。乘、除和求余運算的操作元是整型或浮點型數(shù)據(jù)。*、/、%運算符的優(yōu)先級是3級。,2019/7/11,3,(3)自增、自減運算符,自增、自減運算的運算符號為+、-,都是單目運算符,運算符的優(yōu)先級是2級。運算符可以放在操作元之前,也可以放在操作元之后,但操作元必須是一個整型或浮點型變量(不能是常量或表達式)。運算符的作用是使變量的值增1或減1,如: +x,-x表示在使用x之前,先使x的值加(減)1。 x+,x-表示在使用x之后,使x的值加(減)1。 粗略地看,+x和x+的作用相當于x=x+1。但+x和x+的不同之處在于,+x是先執(zhí)行x=x+1再使用x的值,而x+是先使用x的值再執(zhí)行x=x+1。如果 x的原值是5,則: 對于y=+x;y的值為6。 對于y=x+;y的值為5,然后x的值變?yōu)?。,2019/7/11,4,(4)算術(shù)表達式,用算術(shù)符號和操作元連接起來的符合Java語法規(guī)則的式子,稱為算術(shù)表達式。如 x+2*y-30+3*(y+5) -12+n+(-n) (5)算術(shù)混合運算的精度 精度從“低”到“高”排列的順序是: byte short int long float double Java將按運算符兩邊的操作元的最高精度保留結(jié)果的精度,例如:5/2的結(jié)果是2,要想得到2.5,必須寫成5.0/2或5.0f/2。 char型數(shù)據(jù)和整型數(shù)據(jù)運算結(jié)果的精度是int。例如:byte k=18; 那么H+k; 的結(jié)果是int型,因此下列寫法是不正確的, char ch=H+k; 應當寫成: char ch=(char)(H+k);,2019/7/11,5,3.2關系運算符與關系表達式,關系運算符用來比較兩個值的關系,關系運算符的運算結(jié)果是boolean型數(shù)據(jù),當運算符對應的關系成立時,運算結(jié)果是true,否則是false。 (1)大小關系運算符 大小關系運算的符號分別是、=、1的結(jié)果是true。 大小關系運算符的級別是6級。 (2)等與不等關系 等與不等關系運算的符號分別是 “=“和 “!=“,都是雙目運算符。運算符的級別是7級。 (3)關系表達式 結(jié)果為數(shù)值型的變量或表達式可以通過關系運算符形成關系表達式。 例如,2418,(x+y+z)30+x等。,2019/7/11,6,3.3邏輯運算符與邏輯表達式,邏輯運算用來實現(xiàn)boolean型數(shù)據(jù)的邏輯“與”、“或”和“非”運算,運算結(jié)果是boolean型數(shù)據(jù)。 (1)邏輯“與”和邏輯“或” 邏輯“與”和邏輯“或”運算的符號是“&“、“|“,是雙目運算符,操作元是boolean型的變量或求值結(jié)果是boolean型數(shù)據(jù)的表達式。 “&“的運算法則是:當兩個操作元的值都是true時,運算結(jié)果是true,否則是false。 “|“的運算法則是:當兩個操作元的值都是flase時,運算結(jié)果是false,否則是true。 “&“和“|“的級別分別是11和12級,結(jié)合性是左到右。 短路邏輯運算符: 邏輯運算符“&“和“|“也稱做短路邏輯運算符。 進行op1&op2運算時,如果op1的值是false,“&“運算符在運算時不再去計算op2的值,直接就得出op1&op2的結(jié)果是false。 當op1的值是true時,“|“運算符在運算時不再去計算op2的值,直接就得出op1|op2的結(jié)果是true。,2019/7/11,7,(2)邏輯“非”,邏輯“非”運算的符號是“!“,是單目運算符,操作元在左面。當操作元的值是TURE時,運算結(jié)果是FALSE;反之為TURE?!?“的運算級別是2級,結(jié)合性從右到左。例如,!X 相當于!(!X)。 (3)邏輯表達式 結(jié)果為boolean型的變量或表達式可以通過邏輯運算符形成邏輯表達式。例如,2418 & 40,x!=0 | y!=0。,2019/7/11,8,3.4賦值運算符與賦值表達式,賦值運算符:=。 賦值運算符是雙目運算符,左面的操作元必須是變量,不能是常量或表達式。 設x是一個整型變量,y是一個boolean型變量,x=120和 y =false都是正確的賦值表達式,賦值運算符的優(yōu)先級較低,是14級,結(jié)合方向右到左。 賦值表達式的值就是“=”左面變量的值。注意不要將賦值運算符“=”與等號運算符“=”混淆。,2019/7/11,9,3.5 移位運算符,位運算符用來對二進制位進行操作,分為左移位操作和右移位操作。 (1)左移位運算符 左移位運算的符號為,是雙目運算符。左移位運算符左面的操作元稱作被移位數(shù),右面的操作數(shù)稱作移位量,操作元必須是整型類型的數(shù)據(jù)。 假設a是一個被移位的整型數(shù)據(jù),n是位移量。 an運算的結(jié)果是通過將a的所有位都左移n位,每左移一個位,左邊的高階位上的0或1被移出丟棄,并用0填充右邊的低位。 例如int類型數(shù)據(jù)7的二進制表示是 00000000 00000000 00000000 00000111 可以對整型數(shù)據(jù)進行移位運算:左移位或右移位運算。例如,71 得到的結(jié)果是:00000000 00000000 00000000 00001110 整數(shù) 14 對于byte或short型數(shù)據(jù),an的運算結(jié)果是int型精度。當進行 a2 運算時,計算系統(tǒng)首先將a升級為int型數(shù)據(jù),對于正數(shù)將高位用0填充;負數(shù)用1填充。 注:如果把a1的結(jié)果賦值給一個byte型變量就必須進行強制轉(zhuǎn)換運算: byte b=(byte)(a1);,2019/7/11,10,(2)右移位運算符,右移位運算的符號為“,是雙目運算符。假設a是一個被移位的整型數(shù)據(jù),n是位移量。 an運算的結(jié)果是通過將a的所有位都右移n位,每右移一個位,右邊的低階位被移出丟棄,并用0或1填充左邊的高位,a是正數(shù)用0填充,負數(shù)時用1填充。 因此,a每右移一次,如果該數(shù)的每一計算有效位都沒有從低位移出時,就相當于將a除以2并舍棄了余數(shù)。整數(shù)不斷右移位的最后結(jié)果一定是0,而負數(shù)不斷右移位的最后結(jié)果是-1。 對于byte或short型數(shù)據(jù),an的運算結(jié)果是int型精度。 下面的例子3-1中,顯示了類型轉(zhuǎn)換的結(jié)果。效果如圖3-1所示.,2019/7/11,11,例子3-1效果圖,2019/7/11,12,3.6位運算符,(1)“按位與”運算符 “&“是雙目運算符,對兩個整型數(shù)據(jù)a、b按位進行運算,運算結(jié)果是一個整型數(shù)據(jù)c。運算法則是:如果a、b兩個數(shù)據(jù)對應位都是1,則c的該位是1,否則是0。如果b的精度高于a,那么結(jié)果c的精度和b相同。 (2)“按位或”運算符 “|“是雙目運算符。對兩個整型數(shù)據(jù)a、b按位進行運算,運算結(jié)果是一個整型數(shù)據(jù)c。運算法則是:如果a、b兩個數(shù)據(jù)對應位都是0,則c的該位是0,否則是1。如果b的精度高于a,那么結(jié)果c的精度和b相同。 (3)“按位非”運算符 “是單目運算符。對一個整型數(shù)據(jù)a按位進行運算,運算結(jié)果是一個整型數(shù)據(jù)c。運算法則是:如果a對應位是0,則c的該位是1,否則是0。,2019/7/11,13,(4)“按位異或”運算符,“是雙目運算符。對兩個整型數(shù)據(jù)a、b按位進行運算,運算結(jié)果是一個整型數(shù)據(jù)c。運算法則是:如果a、b兩個數(shù)據(jù)對應位相同,則c的該位是0,否則是1。如果b的精度高于a,那么結(jié)果c的精度和b相同。 位運算符在操作邏輯型數(shù)據(jù)時,與邏輯運算符&、|、!不同的是位運算要計算完a和b之后再給出運算的結(jié)果。 在下面的例子3-2中,利用“異或”運算的性質(zhì),對幾個字符進行加密并輸出密文,然后再解密。運行結(jié)果見圖3-2。,2019/7/11,14,3.7 條件運算符,條件運算符是一個3目運算符,它的符號是:“?:“,需要連接3個操作元,用法如下: op1?op2:op3 要求第一個操作元op1的值必須是boolean型數(shù)據(jù)。 運算法則是:當op1的值是true時,op1?op2:op3運算的結(jié)果是op2的值;當op1的值是false時,op1?op2:op3運算的結(jié)果是op3的值。 例如,128?100:200的結(jié)果是100; 128?100:200的結(jié)果是200。,2019/7/11,15,3.8instanceof 運算符,該運算符是雙目運算符,左面的操作元是一個對象,右面是一個類。當左面的對象是右面的類創(chuàng)建的對象時,該運算的結(jié)果是true,否則是false。,2019/7/11,16,3.9一般表達式,Java的一般表達式就是用運算符及操作元連接起來的符合Java規(guī)則的式子,簡稱表達式。一個Java表達式必須能求值,即按著運算符的計算法則,可以計算出表達式的值。 例如,假如 int x=1,y=-2,n=10; 那么,表達式 x+y+(-n)*(xy&x0?(x+1):y) 的值是 int型數(shù)據(jù),結(jié)果為17。,2019/7/11,17,3.10語句概述,Java里的語句可分為以下5類: (1)方法調(diào)用語句 在第4章將介紹類、對象等概念,對象可以調(diào)用類中的方法產(chǎn)生行為,例如: reader.nextInt(); (2)表達式語句 一個表達式的最后加上一個分號就構(gòu)成了一個語句,稱作表達式語句。分號是語句不可缺少的部分。例如,賦值語句: x=23; (3)復合語句 可以用“”和“”把一些語句括起來構(gòu)成復合語句,一個復合語句也稱作一個代碼塊。例如, z=23+x; System.out.println(“hello“); (4)控制語句 控制語句包括:條件分支語句、循環(huán)語句和跳轉(zhuǎn)語句。 (5)package 語句和 import語句 package語句和import語句與類、對象有關,將在第4章講解。,2019/7/11,18,3.11分支語句,1條件分支語句 (1)if-else語句. if-else語句是Java中的一條語句,由一個“if”、“else”和兩個復合語句按一定格式構(gòu)成,if-else 語句的格式如下: if(表達式) 若干語句 else 若干語句 一條if-else語句的作用是根據(jù)不同的條件產(chǎn)生不同的操作,執(zhí)行法則如下: if 后面( )內(nèi)的表達式的值必須是boolean型的。 如果表達式的值為true,則執(zhí)行緊跟著的復合語句;如果表達式的值為false,則執(zhí)行else后面的復合語句。,2019/7/11,19,(2)多條件if-else if-else語句,程序有時需要根據(jù)多條件來選擇某一操作,這時就可以使用if-else if-else語句。if-else if-else語句是Java中的一條語句,由一個“if”、 若干個“else if”、一個“else”與若干個復合語句按一定規(guī)則構(gòu)成。語句的格式如下: if(表達式1) 若干語句 else if(表達式2) 若干語句 else if(表達式n) 若干語句 else 若干語句 ,2019/7/11,20,if-else if-else語句的執(zhí)行法則如下:,有時為了編程的需要,復合語句中可以沒有任何語句。一條if-else if-else語句的作用是根據(jù)不同的條件產(chǎn)生不同的操作,執(zhí)行法則如下: if 以及else if后面( )內(nèi)的表達式的值必須是boolean型的。 該語句執(zhí)行時,首先計算if后括號中的表達式的值,如果該表達式的值為true,則執(zhí)行緊跟著的復合語句,然后就結(jié)束整個語句的執(zhí)行;如果if后括號中的表達式的值為false,就依次再計算后面的else if的表達式的值,直到出現(xiàn)某個表達式的值為true為止,然后執(zhí)行該else if后面的復合語句,結(jié)束整個語句的執(zhí)行。如果所有的表達式的值都是false,就執(zhí)行else后面復合語句,結(jié)束整個語句的執(zhí)行。 在下面的例子3中,用戶在鍵盤輸入3個數(shù),程序判斷這3個數(shù)能構(gòu)成什么形狀的三角形。運行結(jié)果見圖3-3。,2019/7/11,21,2switch開關語句,switch 語句是多分支的開關語句,它的一般格式定義如下: switch(表達式) case 常量值1: 若干個語句 break; case 常量值2: 若干個語句 break; case 常量值n: 若干個語句 break; default: 若干語句 ,switch語句中表達式的值必須是整型或字符型;常量值1到常量值 n必須也是整型或字符型。switch語句首先計算表達式的值,如果表達式的值和某個case 后面的常量值相同,就執(zhí)行該case里的若干個語句,直到碰到break語句為止。若沒有任何常量值與表達式的值相同,則執(zhí)行default后面的若干個語句。其中default是可有可無的,如果它不存在,并且所有的常量值都和表達式的值不相同,那么switch語句就不會進行任何處理。需要注意的是,在同一個switch語句中,case后的常量值必須互不相同。 下面的例子4使用了switch語句,用戶在鍵盤輸入一個代表月份的整數(shù),程序輸出是該月是在年度的第幾季度。運行結(jié)果見圖3-4.,2019/7/11,22,例子3-4效果圖,2019/7/11,23,3.12循環(huán)語句,1while循環(huán) while語句的一般格式: while(表達式) 若干語句 while語句由關鍵字while、括號中的一個求值為boolean型數(shù)據(jù)的表達式和一個復合語句組成,其中的復合語句稱作循環(huán)體,循環(huán)體只有一條語句時,大括號“”可以省略,但最好不要省略,以便增加程序的可讀性。表達式稱作循環(huán)條件。 while語句的執(zhí)行規(guī)則是: (1)計算表達式的值,如果該值是true時,就進行(2),否則進行(3)。 (2)執(zhí)行循環(huán)體,再進行(1) (3)結(jié)束while語句的執(zhí)行 while語句執(zhí)行規(guī)則如流程圖3- 5所示。,2019/7/11,24,while語句執(zhí)行規(guī)則 流程圖3- 5 do while語句執(zhí)行規(guī)則 流程圖3- 6,2019/7/11,25,2do-while循環(huán),一般格式: do 若干語句 while(表達式); do-while循環(huán)和while循環(huán)的區(qū)別是do-while的循環(huán)體至少被執(zhí)行一次,如圖3.6所示。 下面的例子5分別用while和do-while循環(huán)計算常數(shù)e的近似值e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論