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

下載本文檔

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

文檔簡(jiǎn)介

1、第3章運(yùn)算符、表達(dá)式與語句,本章導(dǎo)讀 1. 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2. 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 3. 邏輯運(yùn)算符與邏輯表達(dá)式 4. 賦值運(yùn)算符與賦值表達(dá)式 5. 移位運(yùn)算符 6. 位運(yùn)算符 7. 條件運(yùn)算符 8. instanceof 運(yùn)算符,9.一般表達(dá)式 10. 語句概述 11. 分支語句 12.循環(huán)語句 13.跳轉(zhuǎn)語句,3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式,(1)加減運(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、2*3/8,先計(jì)算2*3,然后再將得到的結(jié)果除以8。乘、除 和求余運(yùn)算的操作元是整型或浮點(diǎn)型數(shù)據(jù)。*、/、%運(yùn) 算符的優(yōu)先級(jí)是3級(jí)。,(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+是先

3、使用x的值再執(zhí)行x=x+1。如果 x的原值是5,則: 對(duì)于y=+x;y的值為6。 對(duì)于y=x+;y的值為5,然后x的值變?yōu)?。,(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。例如: by

4、te k=18; 那么 H+k; 的結(jié)果是int型,因此下列寫法是不正確的, char ch=H+k; 應(yīng)當(dāng)寫成: char ch=(char)(H+k);,返回,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。在書寫時(shí)要特別注意的是“20-17的結(jié)果為true,因?yàn)樗阈g(shù)運(yùn)算符的級(jí)別高于關(guān)系運(yùn)算符,1020-17相當(dāng)于10(20-17)。,(2)等與不等關(guān)系 等與不等關(guān)系運(yùn)算的符號(hào)分別是:“=

5、”、“!=”,都是雙目運(yùn)算符。運(yùn)算符的級(jí)別是7級(jí)?!?”和“!=”都是由2個(gè)字符組成的一個(gè)完整的符號(hào),書寫時(shí)不要含有空格。注意不要將后面講述的賦值運(yùn)算符“=”與等號(hào)運(yùn)算符“=”混淆。 (3)關(guān)系表達(dá)式 結(jié)果為數(shù)值型的變量或表達(dá)式可以通過關(guān)系運(yùn)算符形成關(guān)系表達(dá)式。例如,2418,(x+y+z)30+x等。,返回,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)是: 1111 1000 在進(jìn)行a1運(yùn)算時(shí),首先將1111 1000生級(jí)為int型,將高位用

6、1填充: 1111 1111 1111 1111 1111 1111 1111 1000 然后在進(jìn)行移位運(yùn)算得到-16: 1111 1111 1111 1111 1111 1111 1111 0000,因此,如果把a(bǔ)1的結(jié)果賦值給一個(gè)byte型變量就必須進(jìn)行強(qiáng)制轉(zhuǎn)換運(yùn)算: byte b=(byte)(a1); 在進(jìn)行an運(yùn)算時(shí),如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后進(jìn)行am運(yùn)算。例如,a33的計(jì)算結(jié)果與a1相同。對(duì)于long型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%64的結(jié)果m,然后進(jìn)行am運(yùn)算。,(2)右移位運(yùn)算符 右移位運(yùn)算的符號(hào)為:,是雙目運(yùn)算符。假設(shè)a是一

7、個(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型精度。,在進(jìn)行an運(yùn)算時(shí),如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后進(jìn)行am運(yùn)算,例如,a33的計(jì)算結(jié)果與a1相同。對(duì)于long型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%64的

8、結(jié)果m,然后進(jìn)行am運(yùn)算。 在下面的例子1中,用戶輸入移位運(yùn)算的兩個(gè)操作元,程序給出右移和左移后的結(jié)果。 名字:Example3_1.java,返回,import java.util.*; public class Example3_1 public static void main (String args ) Scanner reader=new Scanner(System.in); System.out.println(輸入待移位的int型整數(shù):); int x = reader.nextInt(); System.out.println(輸入移位量:); int n = reader

9、.nextInt(); System.out.println(左移位的結(jié)果:+(xn); ,3.6位運(yùn)算符,(1)“按位與”運(yùn)算符 “ char secret=z; for(int i=0;ia.length;i+) ai=(char)(aisecret); System.out.printf(密文:n); for(int i=0;ia.length;i+) ,System.out.printf(%3c,ai); for(int i=0;ia.length;i+) ai=(char)(aisecret); System.out.printf(n原文:n); for(int i=0;ia.len

10、gth;i+) System.out.printf(%3c,ai); ,圖3-2,返回,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。,返回,3.8instanceof 運(yùn)算符,該運(yùn)算符是雙目運(yùn)算符,左面的操作元是一個(gè)對(duì)象,右面

11、是一個(gè)類。當(dāng)左面的對(duì)象是右面的類創(chuàng)建的對(duì)象時(shí),該運(yùn)算的結(jié)果是true,否則是false。該運(yùn)算符將在第4章以后使用。,返回,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 (2)表達(dá)式語句 一個(gè)表達(dá)式的最后加上一個(gè)分號(hào)就構(gòu)成了一個(gè)語句,稱作表達(dá)式語句。分號(hào)是語句不可缺少的部分。例如,賦值語句: x=23;,(3)復(fù)合語句 可以用“”和“”把一些語句括起來構(gòu)成復(fù)合語句,一個(gè)復(fù)合語

12、句也稱作一個(gè)代碼塊。例如, z=23+x; System.out.println(hello); (4)控制語句 控制語句包括:條件分支語句、循環(huán)語句和跳轉(zhuǎn)語句。 (5)package 語句和 import語句 package語句和import語句與類、對(duì)象有關(guān),將在第4章講解。,返回,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í)行法則如

13、下: if 后面( )內(nèi)的表達(dá)式的值必須是boolean型的。如果表達(dá)式的值為true,則執(zhí)行緊跟著的復(fù)合語句;如果表達(dá)式的值為false,則執(zhí)行else后面的復(fù)合語句。,(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 若干語句

14、,有時(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è)

15、語句的執(zhí)行。 在下面的例子3中,用戶在鍵盤輸入3個(gè)數(shù),程序判斷這3個(gè)數(shù)能構(gòu)成什么形狀的三角形。Example3_3.java,import java.util.*; public class Example3_3 public static void main (String args ) Scanner reader=new Scanner(System.in); double a=0,b=0,c=0; System.out.println(輸入邊a:); a=reader.nextDouble(); System.out.println(輸入邊b:); b=reader.nextDoubl

16、e(); System.out.println(輸入邊c:); c=reader.nextDouble(); if(a+bc else if(a*ab*b+c*c ,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è)ca

17、se 后面的常量值相同,就執(zhí)行該case里的若干個(gè)語句,直到碰到break語句為止。若沒有任何常量值與表達(dá)式的值相同,則執(zhí)行default后面的若干個(gè)語句。其中default是可有可無的,如果它不存在,并且所有的常量值都和表達(dá)式的值不相同,那么switch語句就不會(huì)進(jìn)行任何處理。需要注意的是,在同一個(gè)switch語句中,case后的常量值必須互不相同。 下面的例子4使用了switch語句,用戶在鍵盤輸入一個(gè)代表月份的整數(shù),程序輸出是該月是在年度的第幾季度。,返回,import java.util.*; public class Example3_4 public static void mai

18、n (String args ) Scanner reader=new Scanner(System.in); System.out.println(輸入一個(gè)月份:); int n=reader.nextInt(); switch(n) case 1 : case 2 : case 3 : System.out.printf(%d月屬于第一季度,n); break; case 4 : case 5 :,case 6 : System.out.printf(%d月屬于第二季度,n); break; case 7 : case 8 : case 9 : System.out.printf(%d月屬

19、于第三季度,n); break; case 10 : case 11 : case 12 : System.out.printf(%d月屬于第四季度,n); break; default: System.out.printf(%d不代表月份,n); ,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ī)則是

20、: (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所示。,while語句執(zhí)行規(guī)則如流程圖3. 5所示。,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+1/1+1/2!+1/3!+ 。,下面的例子5分別用while和do-while循環(huán)計(jì)算常數(shù)e的近似值:e

21、=1+1/1+1/2!+1/3!+ ,public class Example3_5 public static void main (String args ) double sum=0,item=1; int i=1; while(i=1000) sum=sum+item; i+; item=item*(1.0/i); sum=sum+1; System.out.println(e=+sum);,sum=0; i=1; item=1; do sum=sum+item; i+; item=item*(1.0/i) ; while(i=1000); sum=sum+1; System.out.

22、println(e=+sum); ,3for循環(huán) for語句的一般格式: for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 若干語句 for語句由關(guān)鍵字for、括號(hào)中用分號(hào)分割的3個(gè)表達(dá)式,以及一個(gè)復(fù)合語句組成,其中的“表達(dá)式2”必須是一個(gè)求值為boolean型數(shù)據(jù)的表達(dá)式,而復(fù)合語句稱作循環(huán)體。,for語句的執(zhí)行規(guī)則是: (1)計(jì)算“表達(dá)式1”,完成必要的初始化工作 (2)判斷“表達(dá)式2”的值,若“表達(dá)式2”的值為true, 則進(jìn)行(3),否則進(jìn)行(4)。 (3)執(zhí)行循環(huán)體,然后計(jì)算“表達(dá)式3”,以便改變循 環(huán)條件,進(jìn)行(2)。圖3.9 使用for語句 (4)結(jié)束for語句的執(zhí)行. 一個(gè)數(shù)如果恰好等

23、于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如,6=1+2+3。下面的例子6使用for循環(huán)計(jì)算出1000內(nèi)的全部完數(shù),返回,public class Example3_6 public static void main (String args ) int sum,i,j; for(i=1;i=1000;i+) for(j=1,sum=0;j=i/2;j+) if(i%j=0), sum=sum+j; if(sum=i) System.out.printf(%8d是一個(gè)完數(shù)%n,i); ,3.13跳轉(zhuǎn)語句,跳轉(zhuǎn)語句是指用關(guān)鍵break或continue加上分號(hào)構(gòu)成的語句,例如: break; 在循

24、環(huán)語句的循環(huán)體中使用跳轉(zhuǎn)語句。在一個(gè)循環(huán)中,比如循環(huán)50次的循環(huán)語句中,如果在某次循環(huán)體的執(zhí)行中執(zhí)行了break語句,那么整個(gè)循環(huán)語句就結(jié)束。如果在某次循環(huán)體的執(zhí)行中執(zhí)行了continue語句,那么本次循環(huán)就結(jié)束,即不再執(zhí)行本次循環(huán)中循環(huán)體中continue語句后面的語句,而轉(zhuǎn)入進(jìn)行下一次循環(huán)。 下面的例子7使用的跳轉(zhuǎn)語句。 計(jì)算10以內(nèi)能被3整除數(shù)的和。Example3_7.java,返回,class Example3_7 public static void main(String args) int sum=0,i,j; for( i=1;i=10;i+) /該循環(huán)計(jì)算3+6+9。 if

25、(i%3!=0) continue; else sum=sum+i; System.out.println(sum=+sum); ,第三章 習(xí)題,1。下列語句輸出的結(jié)果是什么? Int a=100, x,y; X=+a; Y=a- System.out.printf(“%d, %d,%d”,x,y,a);,答:101,101,100,2。下列語句那些有錯(cuò)誤? Int x=0; X=5.0/2; Float y=12.5F; Y=5.0/2;,答:x=5.0/2; 錯(cuò)。,3。下列語句那些有錯(cuò)? Byte x=32; Char c=a; Int n=c-x; C=c-x;,答:c=c-x;錯(cuò) 應(yīng)為 int類型。,4下列語句正確的是(A, c ) A.表達(dá)式“12+5634”的值是true B.表達(dá)式“12+56|34”是非法表達(dá)式 C.表達(dá)式“x+y=12”是非法表達(dá)式 D.表達(dá)式“12+5634”的值是13,5。對(duì)于整數(shù)m, m1的結(jié)果一定是2

溫馨提示

  • 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)論