運(yùn)算符、表達(dá)式和流程控制_第1頁
運(yùn)算符、表達(dá)式和流程控制_第2頁
運(yùn)算符、表達(dá)式和流程控制_第3頁
運(yùn)算符、表達(dá)式和流程控制_第4頁
運(yùn)算符、表達(dá)式和流程控制_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、運(yùn)算符、表達(dá)式和流程控制課程代碼:AMPC0102V20課程介紹目的:掌握J(rèn)ava運(yùn)算符、表達(dá)式用法及程序流程控制。內(nèi)容:Java運(yùn)算符分類及其用法,表達(dá)式的組成及運(yùn)算規(guī)則,實(shí)現(xiàn)程序運(yùn)行流程控制的分支結(jié)構(gòu)、循環(huán)及遞歸結(jié)構(gòu)。重點(diǎn):運(yùn)算符、流程控制難點(diǎn):遞歸運(yùn)算符、表達(dá)式和流程控制 運(yùn)算符 表達(dá)式 程序運(yùn)行流程 分支語句 循環(huán)語句 遞歸一. 運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符布爾運(yùn)算符位運(yùn)算符移位運(yùn)算符賦值運(yùn)算符其他運(yùn)算符運(yùn)算符概述運(yùn)算符是用于標(biāo)記對數(shù)據(jù)執(zhí)行某種運(yùn)算的特定符號。按運(yùn)算性質(zhì)分類:算術(shù)運(yùn)算符:+,-,*,/,%關(guān)系運(yùn)算符:,=,賦值運(yùn)算符:=及擴(kuò)展賦值運(yùn)算符(+=,-=,*=,/=,)其他運(yùn)算

2、符:+,-,?: ,+,-按操作數(shù)的個(gè)數(shù)分類:單目運(yùn)算符雙目運(yùn)算符三目運(yùn)算符布爾運(yùn)算符布爾運(yùn)算符及其功能:!- 邏輯非 & - 邏輯與| - 邏輯或 - 邏輯異或 &- 短路與| - 短路或功能舉例:ab!aa&ba|baba&ba|btruetrue falsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse短路邏輯運(yùn)算符使用短路邏輯運(yùn)算符&和|可實(shí)現(xiàn)“短路”的“與”和“或”運(yùn)算的

3、功能當(dāng)根據(jù)第一個(gè)操作數(shù)的值已經(jīng)能夠確定整個(gè)表達(dá)式的結(jié)果時(shí),將跳過對第二個(gè)操作數(shù)值的評估,直接得出最終結(jié)果。if(n31)System.out.println(非法賦值);短路邏輯運(yùn)算符應(yīng)用舉例class MyDatepublic int day,month,year;public MyDate(int d, int m, int y)day = d; month = m; year=y;public class Test public static void main(String args)MyDate m = null;m = new MyDate(38,6,2002);if(m!=nul

4、l) & (m.day0) & (m.day31) System.out.println(日期合法);位運(yùn)算符位運(yùn)算符功能 - 取反 & - 按位與 | - 按位或 - 按位異或位運(yùn)算符功能說明:010011111011000001101101&010010011100101101101101 |111011111100101101101101 1010011011001011Java整數(shù)二進(jìn)制表示Java語言二進(jìn)制數(shù)采用補(bǔ)碼形式表示。正數(shù)進(jìn)制轉(zhuǎn)換十進(jìn)制-二進(jìn)制:除2取余、除盡為止二進(jìn)制-十進(jìn)制:累加求和負(fù)數(shù)進(jìn)制轉(zhuǎn)換十進(jìn)制到二進(jìn)制:取絕對值轉(zhuǎn)換為二進(jìn)制逐位取反加1二進(jìn)制到十進(jìn)制:減1逐位取反轉(zhuǎn)

5、換為十進(jìn)制正數(shù)乘-1使用位運(yùn)算符public class TestBitwiseOperatorpublic static void main(String args)int a = 9 & 12;int b = 9 | 12;int c = 9 12;int d = 12;System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);輸出結(jié)果:8135-13例4-4移位運(yùn)算符移位運(yùn)算符用于對整型數(shù)據(jù)的二進(jìn)制位進(jìn)行移位處理。左移ab;將二進(jìn)制形式的a逐位右移b位,最高位(左側(cè))空出

6、的b位補(bǔ)原來的符號位;無符號右移ab;將二進(jìn)制形式的a逐位右移b位,最高位空出的b位補(bǔ)0。移位運(yùn)算展示2227 = 00000000 00000000 00001000 10110011 22273 = 00000000 00000000 00000001 00010110 22273 = 00000000 00000000 00000001 00010110 -2227 = 11111111 11111111 11110111 01001101-22273 = 11111111 11111111 11111110 11101001 -22273 = 00011111 11111111 111

7、11110 11101001 移位運(yùn)算符性質(zhì)適用數(shù)據(jù)類型:byte、short、char、int、long,對低于int型的操作數(shù)將先自動轉(zhuǎn)換為int型,再進(jìn)行移位 。對于int型整數(shù)移位ab,系統(tǒng)先將b對32取模,得到的結(jié)果才是真正移位的位數(shù)。對于long型整數(shù)移位時(shí)ab ,則是先將移位位數(shù)b對64取模。移位運(yùn)算符應(yīng)用舉例實(shí)現(xiàn)二進(jìn)制位的屏蔽效果public class TestMask/*獲取指定整數(shù)num二進(jìn)制表示從右側(cè)數(shù)第n位的值*/public int getOneBit(int num,int n)int i = 1 (n-1);public static void main(Str

8、ing args)int x = 6;TestMask tm = new TestMask();System.out.print(tm.getOneBit(x,4);System.out.print(tm.getOneBit(x,3);System.out.print(tm.getOneBit(x,2);System.out.print(tm.getOneBit(x,1);例4-5 賦值運(yùn)算符=將等號右側(cè)表達(dá)式的計(jì)算結(jié)果賦給等號左側(cè)的變量,賦值操作時(shí)遵循值傳遞原則。=左側(cè)必須是一個(gè)已經(jīng)聲明過的變量,而不允許是常量或復(fù)合表達(dá)式。賦值運(yùn)算符左右兩側(cè)的數(shù)據(jù)類型應(yīng)保持一致,可以自動進(jìn)行類型轉(zhuǎn)換的情況除

9、外。int i = 5, j = 6;/合法j = i + 10 ;/合法10 = i + j;/非法i + j = 10;/非法擴(kuò)展賦值運(yùn)算符將賦值運(yùn)算符和其他的運(yùn)算符結(jié)合起來可以組成擴(kuò)展賦值運(yùn)算符,以實(shí)現(xiàn)簡化的運(yùn)算標(biāo)記效果。運(yùn)算符使用格式功能說明 += a += b a = a + b -= a -= b a = a - b *= a *= b a = a * b /= a /= b a = a / b %= a %= b a = a % b &= a &= b a = a & b |= a |= b a = a | b = a = b a = a b = a = b a = a = a

10、= b a = a b = a = b a = a b條件運(yùn)算符?:語法格式:說明:必須為boolean類型,當(dāng)其值為true時(shí),則將的值作為整個(gè)表達(dá)式的最終結(jié)果,否則將的值作為整個(gè)表達(dá)式的最終結(jié)果。 ? : int score = 50;int result = x 60 ? 60: x;String type = score 60 ? 不及格 : 及格;自增/自減運(yùn)算符+/-用于對單個(gè)變量進(jìn)行增1和減1操作。可以單獨(dú)使用,也可用于復(fù)合表達(dá)式中;運(yùn)算符可以位于變量之前,也可用于變量之后。int i = 5;int j;i +;/等價(jià)于i = i + 1; 或 +i;j = +i;/等價(jià)于i

11、= i + 1; j = i;j = i+; /等價(jià)于j = i; i= i + 1;j = 4 * i-; /等價(jià)于j = 4 * i; i = i - 1;字符串連接運(yùn)算符 + 除用于算術(shù)加法運(yùn)算外,還可用于對字符串進(jìn)行連接操作。+運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串(String)類型,系統(tǒng)會自動將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接。int i = 300 +5;String s = hello, + world!;int i = 300 +5;String s = hello, + i + 號;System.out.println(s); 輸出結(jié)果:hello, 305號二. 表

12、達(dá)式什么是表達(dá)式表達(dá)式中的數(shù)值類型轉(zhuǎn)換什么是表達(dá)式?表達(dá)式是符合一定語法規(guī)則的運(yùn)算符和操作數(shù)的序列 。表達(dá)式的類型和值對表達(dá)式中操作數(shù)進(jìn)行運(yùn)算得到的結(jié)果稱為表達(dá)式的值 表達(dá)式的值的數(shù)據(jù)類型即為表達(dá)式的類型 表達(dá)式的運(yùn)算順序首先應(yīng)按照運(yùn)算符的優(yōu)先級從高到低的順序進(jìn)行 優(yōu)先級相同的運(yùn)算符按照事先約定的結(jié)合方向進(jìn)行3a 5.0 + a(a-b) * c - 4String s1 = 3 + 5 + hello;/s1結(jié)果為8helloString s2 = hello + 3 + 5;/s2結(jié)果為hello35運(yùn)算符優(yōu)先級/結(jié)合方向結(jié)合方向Java運(yùn)算符從左向右 () . (方法調(diào)用)從右向左+ -

13、 +(單目運(yùn)算) -(單目運(yùn)算) ! (強(qiáng)制類型轉(zhuǎn)換) new從左向右* / %從左向右+(加) -(減)從左向右 從左向右 = instanceof從左向右= !=從左向右&從左向右從左向右|從左向右&從左向右|從右向左?:從右向左= += -+ *= /= %= &= |= = = =表達(dá)式中的數(shù)值類型轉(zhuǎn)換自動類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換數(shù)值類型間轉(zhuǎn)換途徑int n = 35;long a = n;float f = n;double d = c;double e = 3.14f;int i = (int)3.14;byte b = (byte)i;byteshortintlongfloatdou

14、blechar三. 程序運(yùn)行流程順序性結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)按照運(yùn)行流程來劃分,程序可分為三種基本結(jié)構(gòu)順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu):按照語句出現(xiàn)的順序依次執(zhí)行的程序結(jié)構(gòu)。語句A語句B分支結(jié)構(gòu)分支結(jié)構(gòu)也稱選擇性結(jié)構(gòu),有條件地執(zhí)行或跳過特定的語句或語句塊,實(shí)現(xiàn)有選擇的流程控制。語句塊條件truefalse單路分支結(jié)構(gòu)語句塊1條件truefalse語句塊2雙路分支結(jié)構(gòu)語句塊1條件1falsetrue語句塊2條件2falsetrue語句塊n條件nfalsetrue語句塊n+1多路分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)在一定的條件下重復(fù)執(zhí)行特定代碼。條件truefalse當(dāng)型循環(huán)結(jié)構(gòu)語句塊條件 truefal

15、se直到型循環(huán)結(jié)構(gòu)語句塊四. 分支語句if-else語句switch語句if-else語句if-else語句用于實(shí)現(xiàn)分支結(jié)構(gòu),其中的else子句不是必須的,if-else語句又可細(xì)分為三種形式:單路分支結(jié)構(gòu)雙路分支結(jié)構(gòu)多路分支結(jié)構(gòu)if語句實(shí)現(xiàn)單路分支結(jié)構(gòu)語法格式:舉例:if()int score = 57;if(score 60)score = 60;/受if條件影響,條件成立時(shí)執(zhí)行System.out.println(score: + score);/無條件執(zhí)行if語句實(shí)現(xiàn)雙路分支結(jié)構(gòu)語法格式:舉例:if()elsepublic void m1(int a, int b)int max; i

16、f(a b)max = a;elsemax = b;System.out.println(max= + max);if語句實(shí)現(xiàn)多路分支結(jié)構(gòu)語法格式:if()else if() else if()else public char convert(int score)char grade;if (score = 90) grade = A;grade = B; else if (score = 60) grade = C; else grade = F;return grade;舉例:switch語句用于實(shí)現(xiàn)簡單的多路分支結(jié)構(gòu)。語法格式:switch () case : case : . case

17、 : default: 說明:switch后的必須是下述幾種類型之一:int, byte, char, short,枚舉類型和封裝類類型;case子句中的常量值不得重復(fù);default子句是任選的;break語句用來在執(zhí)行完一個(gè)case分支后使程序跳出switch語句塊;switch語句舉例(1)public class Testpublic static void main(String args)int i = 1;switch (i) case 0:System.out.println(zero);break;case 1:System.out.println(one);break;ca

18、se 2:System.out.println(two);break;default:System.out.println(default);break;switch語句舉例(2)public void convert(char grade)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;五. 循環(huán)語句for循環(huán)while循環(huán)do-while循環(huán)f

19、or-each循環(huán)循環(huán)的嵌套流程控制語句break和continuefor循環(huán)語法格式:運(yùn)行流程:for (; ; ) for (; ; )true結(jié)束false開始for循環(huán)舉例public class TestForLoop public static void main(String args)int result = 0;for(int i = 1; i=100; i+)result += i;System.out.println(result);例4-17while循環(huán)語法格式:舉例:while() public class TestWhileLooppublic static vo

20、id main(String args)int i = 1;int result = 0;while(i = 100)result += i;i +;System.out.println(result);例4-19do-while循環(huán)語法格式:舉例:dowhile(); public class TestDoWhileLooppublic static void main(String args)int i = 1;int result = 0;doresult += i;i +;while(i = 100);System.out.println(result);例4-20for-each循環(huán)

21、功能:逐個(gè)處理(遍歷)數(shù)組或集合中的所有元素。 語法格式:舉例:for( : )public class TestForEachLooppublic static void main(String args)int a = 3,5,78,12;for(int k : a)System.out.println(k);輸出結(jié)果:357812例4-21循環(huán)的嵌套循環(huán)體中再包含有循環(huán)語句,嵌套層次無限制。public class TestNestedLooppublic static void main(String args)TestNestedLoop tn = new TestNestedLoo

22、p();int total = tn.m(4); /計(jì)算1! + 2! + 3! + 4! = 33System.out.println(total);public int m(int n)int result = 0;for(int i=1; i=n; i+)int temp = 1;for(int j=1; j=i; j+)temp *= j;result += temp;return result;例4-22break語句break語句用于終止所在switch塊或循環(huán)語句的運(yùn)行。語法格式:舉例:break; break ; public class TestBreakpublic sta

23、tic void main(String args)for(int i = 0; i10; i+) if(i=3)break;System.out.println( i = + i);System.out.println(Game Over!);例4-23終止嵌套循環(huán)import java.util.Scanner;public class TestBreakOuterpublic static void main(String args)Scanner scan = new Scanner(System.in);int i;outer:while(true)i = scan.nextInt(

24、);for(int j=2; ji; j+)if(i%j = 0) System.out.println(i + 不是素?cái)?shù),程序退出); break outer;System.out.println(i + 是素?cái)?shù),請繼續(xù)!);例4-24continue語句continue語句用于結(jié)束所在的循環(huán)語句的本次運(yùn)行,即跳過其后的循環(huán)體語句,開始下一次循環(huán)。語法格式:舉例:break; break ; public class TestContinuepublic static void main(String args)for (int i = 0; i 100; i+) if (i%10=0)co

25、ntinue;System.out.println(i);例4-25跳過嵌套循環(huán)public class TestContinueOuterpublic static void main(String args)int n = 0;outer:for(int i=101;i200;i+=2) for(int j=2; ji;j+) if(i%j=0) continue outer; System.out.print(i + t);n+; if(n2)程序要點(diǎn):使用遞歸不使用遞歸實(shí)現(xiàn)代碼:例4-28 解決Fibonacy數(shù)列問題漢諾塔問題游戲規(guī)則:在一塊銅板上面立有三根桿A、B、C,開始時(shí)在A桿上串有若干個(gè)大小各不相同的金盤,且保證小盤在上、大盤在下,游戲的目標(biāo)是把A桿上的金盤最終全部移到

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論