Java精解案例教程 第4課 運(yùn)算符表達(dá)式分支語句.ppt_第1頁
Java精解案例教程 第4課 運(yùn)算符表達(dá)式分支語句.ppt_第2頁
Java精解案例教程 第4課 運(yùn)算符表達(dá)式分支語句.ppt_第3頁
Java精解案例教程 第4課 運(yùn)算符表達(dá)式分支語句.ppt_第4頁
Java精解案例教程 第4課 運(yùn)算符表達(dá)式分支語句.ppt_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1,運(yùn)算符/表達(dá)式/分支語句,第四課,2,本課內(nèi)容,Java運(yùn)算符 表達(dá)式 分支語句 if-else語句 switch語句 循環(huán)語句 for 循環(huán) while 循環(huán) do-while 循環(huán) 特殊的循環(huán)控制語句,3,運(yùn)算符,算術(shù)運(yùn)算符: +,*,/,%,+, 關(guān)系運(yùn)算符: ,=, 賦值運(yùn)算符: = 擴(kuò)展賦值運(yùn)算符:+=,=,*=,/= 字符串連接運(yùn)算符: +,4,邏輯運(yùn)算符(1),邏輯運(yùn)算符功能 !- 邏輯非 a = true; b = false; c = a ,6,邏輯運(yùn)算符(2),短路邏輯運(yùn)算符應(yīng)用 ,7,邏輯運(yùn)算符使用舉例(0404/Test2.java,Test1.java, Test

2、.java),class MyDate public int day,month,year; public MyDate(int d, int m, int y) day = d; month = m; year=y; public class Test2 public static void main(String args) MyDate m = null; m = new MyDate(38,6,2002); if(m!=null) ,8,位運(yùn)算符,位運(yùn)算符功能 - 取反 int i = a; System.out.println(i= + i ); System.out.println

3、(128 | 3); System.out.println(67 3); System.out.println(67 ,11,移位運(yùn)算符(1),左移 “ab; 將二進(jìn)制形式的a逐位右移b位,最高位空出的b位補(bǔ)原來的符號位; 無符號右移 ab;將二進(jìn)制形式的a逐位右移b位,最高位空出的b位補(bǔ)0。,12,移位運(yùn)算符(2),移位運(yùn)算符性質(zhì) 適用數(shù)據(jù)類型:byte、short、char、int、long,對低于int型的操作數(shù)將先自動轉(zhuǎn)換為int型再移位 (0506/Test.java);,13,移位運(yùn)算符(3),移位運(yùn)算符應(yīng)用舉例,14,0407/Test.java,練習(xí)下面的程序,排除編譯錯誤,分

4、析其輸出 結(jié)果: public class MyTest public static void main(String args) int a=10 int j = a3; int k = a32; System.out.println(j= + j ); System.out.println(k= +k ); System.out.println(m= +m ); ,15,賦值運(yùn)算符(1),賦值運(yùn)算符= 當(dāng)“=”兩側(cè)的數(shù)據(jù)類型不一致時,可以使用默認(rèn)類型轉(zhuǎn)換或強(qiáng)制類型轉(zhuǎn)換原則進(jìn)行處理 long l = 100; int i = (int)l; 特例:可以將整型常量直接賦值給byte, shor

5、t, char等類型變量,而不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,只要不超出其表數(shù)范圍 byte b = 12;/合法 byte b = 4096;/非法,16,基本數(shù)據(jù)類型自動轉(zhuǎn)換(0408/Test.java),public class Test public static void main(String args) int i = (int)Math.pow(2,16) ; short s = -32768;/-3276832767 char c = 65535; /065535 2 的16次方=65536 System.out.println(c); ,基本數(shù)據(jù)類型轉(zhuǎn)換等級: byte,short

6、,char - int - long float - double int - float long - double,17,賦值運(yùn)算符(2),擴(kuò)展賦值運(yùn)算符,18,字符串連接運(yùn)算符 +,+ 除用于算術(shù)加法運(yùn)算外,還可用于對字符串進(jìn)行連接操作 int i = 300 +5; String s = hello, + world!; +運(yùn)算符兩側(cè)的操作數(shù)中只要有一個是字符串(String)類型,系統(tǒng)會自動將另一個操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接 int i = 300 +5; String s = hello, + i + 號; System.out.println(s); /輸出:hello,

7、305號,19,表達(dá)式,表達(dá)式是符合一定語法規(guī)則的運(yùn)算符和操作數(shù)的序列 a 5.0 + a (a-b)*c-4 i30 int result = x 60 ? 60: x; String type = score 60 ? 不及格 : 及格;,21,運(yùn)算符優(yōu)先級,22,從結(jié)構(gòu)化程序設(shè)計角度出發(fā),程序有三種結(jié)構(gòu):,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),程序結(jié)構(gòu),23,程序結(jié)構(gòu)-順序結(jié)構(gòu),先執(zhí)行A, 再執(zhí)行B.,24,程序結(jié)構(gòu)-選擇結(jié)構(gòu),存在某條件P, 若P為真,則執(zhí)行A, 否則執(zhí)行B。,25,程序結(jié)構(gòu)-循環(huán)結(jié)構(gòu),(1) 當(dāng)型結(jié)構(gòu) 當(dāng)P條件成立時(T),反復(fù)執(zhí)行A,直到P為“ 假 ”時才停止循環(huán).,有兩種

8、結(jié)構(gòu):當(dāng)型和直到型,26,(2) 直到型,先執(zhí)行A, 再判斷P,若為T,再執(zhí)行A,如此反復(fù),直到P為F.,27,另外:由選擇結(jié)構(gòu)可以派生出另一種基本結(jié)構(gòu)多分支結(jié)構(gòu).,已證明: 上述三種結(jié)構(gòu)組成的程序可以解決全部的問題,所以任何一種高級語言都具備上述三種結(jié)構(gòu)。,28,分支語句,分支語句實(shí)現(xiàn)程序流程控制的功能 ,即根據(jù)一定的條件有選擇地執(zhí)行或跳過特定的語句 Java分支語句分類 if-else 語句 switch 語句,29,if的三種形式,功能: 當(dāng)表達(dá)式值為false時, 執(zhí)行語句A,否則跳過語句A.,例如: if (xy) z = x; k = 10;,形式1 if(boolean類型表達(dá)式

9、) 語句A,流程圖:,if 語句條件判斷,30,形式2 if(boolean類型表達(dá)式) 語句A else 語句B,功能: 表達(dá)式為非0,執(zhí)行語句A 表達(dá)式為0,執(zhí)行語句B,例如: if (xy) z = x; else z = y; k = 10;,31,形式3 if(boolean類型表達(dá)式1) 語句1,else if (表達(dá)式2) 語句2,else if (表達(dá)式3) 語句3, ,else if(表達(dá)式n) 語句n,else 語句n,32,流程:,表達(dá)1,表達(dá)2,表達(dá)3,表達(dá)n,語句1,語句2,語句3,語句n,語句n+1,=T,= F,= F,=T,=T,=T,= F,33,if語句應(yīng)用

10、舉例(Ex0402/Test.java),public class Test public static void main(String args) int score = 95; if (score = 90) System.out.println(優(yōu)秀的感覺真好!); if (score = 60 ,34,if-else語句應(yīng)用舉例(Ex0410/Test.java),public class Test public static void main(String args) Test t = new Test(); t.test(75); public void test(int ag

11、e) if (age250) System.out.println(是個妖怪!); else System.out.println(此人芳齡 + age + 可以學(xué)Java!); ,35,if語句的嵌套,if (表達(dá)式1),內(nèi)嵌if,else,內(nèi)嵌if,注意: else與最近的if 配對.(使用),一般形式,在上述形式的if語句中, 又可以是if語句稱為嵌套。,if (表達(dá)式2) 語句1,if (表達(dá)式3) 語句3,else 語句2,else 語句4,36,Java語言提供了一個簡單的條件賦值語句或條件表達(dá)式。,問題: 當(dāng)判斷條件不論是“ 真”是“ 假”, 均給同一變量賦值時,能否簡化語句書寫

12、?,三目運(yùn)算符,三目運(yùn)算符,37,功能: 先判表達(dá)式1,若為true,則整個三目運(yùn)算的結(jié)果為表達(dá)式2的值,否則整個運(yùn)算結(jié)果為表達(dá)式3的值。,一般形式,boolean表達(dá)式1?表達(dá)式2: 表達(dá)式3,max=ab? a:b; 當(dāng)ab,max a. 否則maxb,38,說明: 1. 條件運(yùn)算符優(yōu)先于賦值運(yùn)算符. 例: max=(ab? a:b)可去掉( ),2. 條件運(yùn)算符低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。 例: max=ab? a:b+1 max= ab? a:(b+1)并不是 max=(ab? a:b)+1,3. 條件運(yùn)算符結(jié)合性為從右至左. 如: ab? a:cd ? c:d 相當(dāng)于 ab? a:(

13、cd? c:d),39,4. 條件表達(dá)式不能取代一般的if語句,只有當(dāng)if 的兩 個分支為給同一變量賦值時才可替代if.,int a = 55,b = 66; int max = ab? a:b; String result = a=60?及格:不及格;,建議:在容易引起混淆的地方使用括號。(0403/Test.java),40,switch語句語法格式,switch(boolean表達(dá)式) case const1: statement1; break; case const2: statement2; break; case constN: statementN; break; defaul

14、t: statement_dafault; break; ,41,switch語句應(yīng)用舉例(0409/Test.java),public class Test public static void main(String args) int i = 1; switch (i) case 0: System.out.println(zero); break; case 1: System.out.println(one); break; case 2: System.out.println(two); break; default: System.out.println(default); br

15、eak; ,42,switch語句有關(guān)規(guī)則,表達(dá)式expr的返回值必須是下述幾種類型之一:int, byte, char, short; case子句中的值constan 必須是常量,且所有case子句中的值應(yīng)是不同的; default子句是任選的; break語句用來在執(zhí)行完一個case分支后使程序跳出switch語句塊;,43,例: 根據(jù)成績等級打印百分?jǐn)?shù)段(0409/Test1.java).,switch (grade) case A: System.out.println(85100); break; case B: System.out.println(7084); break; c

16、ase C: System.out.println(6069); break; case D: System.out.println(60); break; default: System.out.println(error); break; ,44,switch (grade) case A: case B: case C: System.out.println(=60); break; case D: System.out.println(60); break; default: System.out.println(error); break; ,0409/Test2.java,45,循

17、環(huán)語句,循環(huán)語句功能 在循環(huán)條件滿足的情況下,反復(fù)執(zhí)行特定代碼 循環(huán)語句的四個組成部分 初始化部分(init_statement) 循環(huán)條件部分(test_exp) 循環(huán)體部分(body_statement) 迭代部分(alter_statement) 循環(huán)語句分類 for 循環(huán) while 循環(huán) do/while 循環(huán),46,for 循環(huán)語句,1. 形式,首先計算表達(dá)式1,接著執(zhí)行表達(dá)式2,若表達(dá)式2的值=ture,則執(zhí)行語句,接著計算表達(dá)式3,再判斷表達(dá)式2的值.依此重復(fù)下去,直到表達(dá)式2的值=false。,2.執(zhí)行過程,for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句,47,for 循環(huán)

18、語句(0410/ForLoop.java),語法格式 for (init_statement; test_exp; alter_statement) body_statement 應(yīng)用舉例 public class ForLoop public static void main(String args) int result = 0; for(int i=1; i=100; i+) result += i; System.out.println(result= + result); ,48,while 循環(huán)語句,形式: while (boolean表達(dá)式) 語句,執(zhí)行過程: 先判斷表達(dá)式的值。

19、若=true.則執(zhí)行其后面的語句,然后再次判斷條件并反復(fù)執(zhí)行,直到條件不成立為止范例:,while語句(“當(dāng)”型循環(huán)),49,while 循環(huán)語句(0410/WhileLoop.java),語法格式 init_statement while( test_exp) body_statement; alter_statement; 應(yīng)用舉例 public class WhileLoop public static void main(String args) int result = 0; int i=1; while(i=100) result += i; i+; System.out.prin

20、tln(result= + result); ,50,do/while 循環(huán)語句,一種專門的“ 直到型” 循環(huán)語句。,2. 執(zhí)行過程: 先執(zhí)行語句,再判表達(dá)式的值,若0,再執(zhí)行語句,否則結(jié)束循環(huán),3. 流程:,1. 形式: do 語句 while(表達(dá)式);,51,do/while 循環(huán)語句(0410/dowhile.java),語法格式 init_statement do body_statement; alter_statement; while( test_exp); 應(yīng)用舉例 public class WhileLoop public static void main(String a

21、rgs) int result = 0, int i=1; do result += i; i+; while(i=100); System.out.println(result= + result); ,52, 表達(dá)式2一般不可省略,否則為無限循環(huán),相當(dāng)于: while (true) sum=sum+i; i+; ,例: for (i=1; ; i+) sum=sum+i;,相當(dāng)于條件永真、永不為false,若用while表示,for語句的幾種特例,53, 表達(dá)式3亦可省略,但在循環(huán)體中須有語句修改循環(huán)變量;以使表達(dá)式2在某一時刻為0而正常結(jié)束循環(huán)。,例: for (sum=0,i=1;i=

22、100;) sum=sum+i; i+; ,54, 若同時省略表達(dá)式1,表達(dá)式3,則相當(dāng)于while(表達(dá)式2)語句。,相當(dāng)于 while (i=100) sum+=i; i+; ,例: for (; i=100;) sum+=i; i+;,55, 三個表達(dá)式均省略 即for(;)語句,此時相當(dāng)于while(true)語句.,表達(dá)式1、表達(dá)式3可以是逗號表達(dá)式,以使循環(huán)變量值在修改時可以對其它變量賦值。,例如:for (sum=0, i=1; i=100; i+, i+) 等價于:sum=0; for (i=1; i=100; i=i+2),56,幾種循環(huán)的比較,1. 對于同一問題, 三種循環(huán)

23、可相互替代。,2. for循環(huán)功能強(qiáng)于while, dowhile.但若不是明顯地給出循環(huán)變量初終值(或修改條件),則應(yīng)用while 或do while.以增強(qiáng)程序的結(jié)構(gòu)化和可讀性。,3. 要防止無限循環(huán)死循環(huán)。,4. 循環(huán)過程中,為了結(jié)束本次循環(huán)或跳出整個循環(huán)。分別要用到下述的continue和break語句。,57,特殊流程控制語句,break 語句 break語句用于終止某個語句塊的執(zhí)行 break; break語句出現(xiàn)在多層嵌套的語句塊中時,可以通過標(biāo)簽指明要終止的是哪一層語句塊 label1: label2: label3: break label2; ,58,特殊流程控制語句(0411/Test.java),break 語句用法舉例 public class TestBreak public static void main(String args)

溫馨提示

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

最新文檔

評論

0/150

提交評論