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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論