第3章表達式與流程控制語句_第1頁
第3章表達式與流程控制語句_第2頁
第3章表達式與流程控制語句_第3頁
第3章表達式與流程控制語句_第4頁
第3章表達式與流程控制語句_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3章章 表達式和流程控制語句表達式和流程控制語句表達式表達式定義:由運算符和操作數(shù)組成,對操作數(shù)進行運定義:由運算符和操作數(shù)組成,對操作數(shù)進行運算符指定的操作,并得出一個結(jié)果算符指定的操作,并得出一個結(jié)果 Java運算符按功能可分為:算術(shù)運算符、關(guān)系運算符、運算符按功能可分為:算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、賦值運算符、條件運算符、邏輯運算符、位運算符、賦值運算符、條件運算符、數(shù)組下標運算符等。操作數(shù)可以是變量、常量或方法數(shù)組下標運算符等。操作數(shù)可以是變量、常量或方法調(diào)用等調(diào)用等 如果表達式中僅含有算術(shù)運算符,如如果表達式中僅含有算術(shù)運算符,如“*”,則為算術(shù),則為算術(shù)表達式

2、,計算結(jié)果是算術(shù)量(表達式,計算結(jié)果是算術(shù)量(“+”用于字符串連接除用于字符串連接除外)外) 如果表達式中含有關(guān)系運算符,如如果表達式中含有關(guān)系運算符,如“”,則為關(guān)系表,則為關(guān)系表達式,計算結(jié)果是邏輯值,即達式,計算結(jié)果是邏輯值,即true或或false 如果表達式中含有邏輯運算符,則為邏輯表達式,相如果表達式中含有邏輯運算符,則為邏輯表達式,相應(yīng)的計算結(jié)果為邏輯值應(yīng)的計算結(jié)果為邏輯值操作數(shù)操作數(shù)常量常量 只有簡單數(shù)據(jù)類型和只有簡單數(shù)據(jù)類型和String類型才有相應(yīng)的類型才有相應(yīng)的常量形式常量形式 常量常量 含義含義 23.5923.59 double double型常量型常量 -1247.

3、1f -1247.1f floatfloat型常量型常量 true true boolean boolean型常量型常量 This is a String This is a StringStringString型常量型常量操作數(shù)操作數(shù)變量變量 存儲數(shù)據(jù)的基本單元,它可以用作表達式中的操作數(shù),在使存儲數(shù)據(jù)的基本單元,它可以用作表達式中的操作數(shù),在使用之前要先說明用之前要先說明 變量說明的基本格式為:變量說明的基本格式為:類型類型 變量名變量名1 = 初值初值1,變量名變量名2 = 初值初值2; 類型既可以是簡單類型,也可以是類類型。有時也把類類型類型既可以是簡單類型,也可以是類類型。有時也把類

4、類型的變量稱為引用。的變量稱為引用。 變量說明的地方有兩處,一處是在方法內(nèi),另一處是在類定變量說明的地方有兩處,一處是在方法內(nèi),另一處是在類定義內(nèi)。方法內(nèi)定義的變量稱作自動變量,局部變量、臨時變義內(nèi)。方法內(nèi)定義的變量稱作自動變量,局部變量、臨時變量或棧變量。類中定義的變量就是它的成員變量。量或棧變量。類中定義的變量就是它的成員變量。 簡單類型的變量在說明之后,系統(tǒng)自動在內(nèi)存分配相應(yīng)的存簡單類型的變量在說明之后,系統(tǒng)自動在內(nèi)存分配相應(yīng)的存儲空間。說明引用后,系統(tǒng)只分配引用空間,程序員要調(diào)用儲空間。說明引用后,系統(tǒng)只分配引用空間,程序員要調(diào)用new來創(chuàng)建對象實例,然后才分配相應(yīng)的存儲空間。來創(chuàng)建對

5、象實例,然后才分配相應(yīng)的存儲空間。操作數(shù)操作數(shù)變量初始化變量初始化 Java不允許將未經(jīng)初始化的變量用做操作數(shù)。不允許將未經(jīng)初始化的變量用做操作數(shù)。對簡單變量在說明的同時可以進行初始化對簡單變量在說明的同時可以進行初始化 創(chuàng)建一個對象后,使用創(chuàng)建一個對象后,使用new運算符分配存儲空運算符分配存儲空間時,系統(tǒng)按表中的值自動初始化成員變量間時,系統(tǒng)按表中的值自動初始化成員變量類型類型初始值初始值bytebyte(byte)0(byte)0shortshort(short)0(short)0intint0 0longlong0L0Lfloatfloat0.0f0.0fdoubledouble0 0

6、charcharu0000(NULL)u0000(NULL)booleanbooleanFALSEFALSE所有引用類型所有引用類型nullnull操作數(shù)操作數(shù)自動變量在使用之前必須初始化自動變量在使用之前必須初始化 編譯器掃描代碼,判定每個變量在首次使用前是否已被顯編譯器掃描代碼,判定每個變量在首次使用前是否已被顯式初始化。如果某個變量沒有初始化,會發(fā)生編譯時錯誤式初始化。如果某個變量沒有初始化,會發(fā)生編譯時錯誤例例3-2int x = (int)( Math.random() * 100 );int y;int z;if (x 50) y = 9;z = y + x; / 可能在初始化之前

7、使用,導(dǎo)致編譯錯誤可能在初始化之前使用,導(dǎo)致編譯錯誤操作數(shù)操作數(shù)變量作用域變量作用域 變量的作用域是指可訪問該變量的代碼范圍變量的作用域是指可訪問該變量的代碼范圍 類中定義的成員變量的作用域是整個類類中定義的成員變量的作用域是整個類 方法中定義的局部變量的作用域是從該變量的說明方法中定義的局部變量的作用域是從該變量的說明處開始到包含該說明的語句塊結(jié)束處處開始到包含該說明的語句塊結(jié)束處 塊內(nèi)說明的變量將屏蔽其所在類定義的同名變塊內(nèi)說明的變量將屏蔽其所在類定義的同名變量量操作數(shù)操作數(shù)程序程序3-1 沖突引起編譯錯誤例子沖突引起編譯錯誤例子 操作數(shù)操作數(shù)程序程序3-2 修改程序修改程序3-1,把第二

8、個局部變量說,把第二個局部變量說明改為賦值語句明改為賦值語句操作數(shù)操作數(shù)程序程序3-3 3-3 main()main()方法中兩次說明了同名局部變量方法中兩次說明了同名局部變量namename,但第但第6 6行說明的變量只在第行說明的變量只在第6 6至第至第9 9行的塊內(nèi)有行的塊內(nèi)有效,在塊外該變量消失,第效,在塊外該變量消失,第1 11 1行不在其作用域行不在其作用域內(nèi)內(nèi) 運算符運算符算術(shù)運算符算術(shù)運算符 算術(shù)運算符包括通常的加(算術(shù)運算符包括通常的加(+)、減()、減(-)、乘)、乘(*)、除()、除(/)、取模()、取模(%),完成整型或?。瓿烧突蚋↑c型數(shù)據(jù)的算術(shù)運算點型數(shù)據(jù)的算術(shù)

9、運算 算術(shù)運算符還有算術(shù)運算符還有“+”、“-”兩種,分別表示兩種,分別表示加加1和減和減1操作操作3/23/2/ / 結(jié)果是結(jié)果是1 115.2 % 515.2 % 5/ / 結(jié)果是結(jié)果是0.20.2運算符運算符關(guān)系運算符關(guān)系運算符 關(guān)系運算符用來比較兩個值,包括大于(關(guān)系運算符用來比較兩個值,包括大于()、)、大于等于(大于等于(=)、小于()、小于()、小于等于)、小于等于( 5) / 對對unset進行某種操作進行某種操作空串空串unset不能使用,因此不能使用,因此不能訪問不能訪問unset.length()if()語句中的邏輯表達式是合法的,且語句中的邏輯表達式是合法的,且完全安全

10、。因為第一個子表達式完全安全。因為第一個子表達式(unset != null)結(jié)果為假,它馬)結(jié)果為假,它馬 上上導(dǎo)致整個表達式的結(jié)果為假。所以導(dǎo)致整個表達式的結(jié)果為假。所以&運算符跳過不必要的(運算符跳過不必要的(unset.length() 5)計算,因為沒有計算它,避免了)計算,因為沒有計算它,避免了空指針異??罩羔槷惓?。位運算符位運算符用來對二進制位進行操作,包括位運算符用來對二進制位進行操作,包括按位取反(按位取反()、按位與()、按位與(&)、按位或)、按位或(|)、異或()、異或()、右移()、右移()、左移)、左移()。位運算符)。位運算符只能對整型和字符型數(shù)據(jù)進行操作。只能對

11、整型和字符型數(shù)據(jù)進行操作。運算符“”運算符運算符“”執(zhí)行算術(shù)右移,它使用最高位執(zhí)行算術(shù)右移,它使用最高位填充移位后左側(cè)的空位。右移的結(jié)果為:填充移位后左側(cè)的空位。右移的結(jié)果為:每移一位,第一個操作數(shù)被每移一位,第一個操作數(shù)被2除一次,移動除一次,移動的次數(shù)由第二個操作數(shù)確定。的次數(shù)由第二個操作數(shù)確定。128 1 128 1 得到得到 6464256 4 256 4 得到得到 1616-256 4 -256 4 得到得到 -16-16邏輯右移運算符邏輯右移或叫無符號右移運算符邏輯右移或叫無符號右移運算符只對位只對位進行操作,而沒有算術(shù)含義,它用進行操作,而沒有算術(shù)含義,它用0填充左填充左側(cè)的空位

12、側(cè)的空位算術(shù)右移不改變原數(shù)的符號,而邏輯右移算術(shù)右移不改變原數(shù)的符號,而邏輯右移不能保證這一點不能保證這一點(byte)0 x80 2 (byte)0 x80 2 得到得到 32320 xa2 2 0 xa2 2 得到得到 4040(byte) 0 xa2 2 (byte) 0 xa2 2 得到得到 -24-24(byte) 0 xa22 (byte) 0 xa22 得到得到 10737418001073741800移位運算符移位運算符移位運算符約簡其右側(cè)的操作數(shù),當左側(cè)操作數(shù)移位運算符約簡其右側(cè)的操作數(shù),當左側(cè)操作數(shù)是是intint類型時,右側(cè)以類型時,右側(cè)以3232取模;當左側(cè)是取模;當左

13、側(cè)是longlong類型類型時,右側(cè)以時,右側(cè)以6464取模取模“”運算符只用于整型,它只對運算符只用于整型,它只對intint或或longlong值起值起作用。如果用于作用。如果用于shortshort或或bytebyte值,則在進行值,則在進行“”操作之前,使用符號擴展將其提升為操作之前,使用符號擴展將其提升為intint型,然后型,然后再移位再移位int x;x = x 32;x的結(jié)果不改變,而不是通常期望的的結(jié)果不改變,而不是通常期望的0。這樣可以保證不會將左側(cè)操作數(shù)完全移走。這樣可以保證不會將左側(cè)操作數(shù)完全移走。其他運算符其他運算符JavaJava中的運算符還包括擴展賦值運算符(中的

14、運算符還包括擴展賦值運算符(= =、+=+=、-=-=、* *= =、/=/=、%=%=、&=&=、|=|=、=、=、=),條件運算符(),條件運算符(?:?:),點),點運算符(運算符(. .),實例運算符(),實例運算符(instanceofinstanceof),),(newnew)運算符,數(shù)組下標運算符()運算符,數(shù)組下標運算符( )等。等。擴展賦值運算符擴展賦值運算符擴展賦值運算符是在賦值號(擴展賦值運算符是在賦值號(=)前再加上)前再加上其他運算符,是對表達式的一種簡寫形式。其他運算符,是對表達式的一種簡寫形式。如果有賦值語句:如果有賦值語句:var = var op expres

15、sion;其中,其中,var是變量,是變量,op是算術(shù)運算符或位運是算術(shù)運算符或位運算符,算符,expression為表達式。使用擴展賦為表達式。使用擴展賦值運算符可表示為:值運算符可表示為:var op= expression;條件運算符條件運算符條件運算符(條件運算符(?:)是三元運算符,它的一)是三元運算符,它的一般形式為:般形式為:表達式表達式 ? 語句語句1 : 語句語句2; 表達式得到一個邏輯值,根據(jù)該值的真假決定表達式得到一個邏輯值,根據(jù)該值的真假決定執(zhí)行什么操作。如果值為真,執(zhí)行語句執(zhí)行什么操作。如果值為真,執(zhí)行語句1,否,否則執(zhí)行語句則執(zhí)行語句2。 注意,語句注意,語句1和語

16、句和語句2需要返回相同的類型,且需要返回相同的類型,且不能是不能是void。運算符的優(yōu)先次序運算符的優(yōu)先次序運算符的優(yōu)先次序 在對一個表達式進行計算時,如果表達式中含在對一個表達式進行計算時,如果表達式中含有多種運算符,則要按運算符的優(yōu)先順序依次有多種運算符,則要按運算符的優(yōu)先順序依次從高向低進行,同級運算符則從左向右進行。從高向低進行,同級運算符則從左向右進行。括號可以改變運算次序括號可以改變運算次序運算符的優(yōu)先次序運算符的優(yōu)先次序( (簡簡) ) 高.,()+,-,!,instanceofnew (type)*,/,%低+,-,=,!=&|&|?:=,+=,-=,*=,/=,%=&=,|=

17、,=,=表達式的提升和轉(zhuǎn)換表達式的提升和轉(zhuǎn)換Java語言不支持變量類型間的自動任意轉(zhuǎn)語言不支持變量類型間的自動任意轉(zhuǎn)換,有時必須顯式地進行變量類型的轉(zhuǎn)換。換,有時必須顯式地進行變量類型的轉(zhuǎn)換。一般的原則是,變量和表達式可轉(zhuǎn)換為更一般的原則是,變量和表達式可轉(zhuǎn)換為更一般的形式,而不能轉(zhuǎn)換為更受限制的形一般的形式,而不能轉(zhuǎn)換為更受限制的形式式 例如,例如,int型表達式可看作是型表達式可看作是long型的;而型的;而long型表達式當不使用顯式轉(zhuǎn)換時是不能看作型表達式當不使用顯式轉(zhuǎn)換時是不能看作int型型的的 一般地,如果變量類型至少與表達式類型一樣一般地,如果變量類型至少與表達式類型一樣(即位數(shù)

18、一樣多),就可以認為表達式是賦值(即位數(shù)一樣多),就可以認為表達式是賦值相容的相容的表達式的提升和轉(zhuǎn)換表達式的提升和轉(zhuǎn)換例例3-7 long bigval = 6;/ 6是整型量,所以該語句是整型量,所以該語句正確正確 int smallval = 99L;/ 99L是長整型量,該語句是長整型量,該語句錯誤錯誤 float z = 12.414F;/ 12.414F是浮點量,該語句是浮點量,該語句正確正確 float z1 = 12.414;/ 12.414是雙精度量,該語句是雙精度量,該語句錯誤錯誤99L是長整型量,是長整型量,smallval是是int型量,賦值不相容。同樣,型量,賦值不相

19、容。同樣,12.414是雙精度型的,不能賦給單精度變量是雙精度型的,不能賦給單精度變量z1表達式的提升和轉(zhuǎn)換表達式的提升和轉(zhuǎn)換long bigValue = 99L;int squashed = (int) (bigValue);當表達式不是賦值相容時,有時需進行轉(zhuǎn)當表達式不是賦值相容時,有時需進行轉(zhuǎn)換以便讓編譯器認可該賦值換以便讓編譯器認可該賦值讓一個讓一個long型值型值“擠擠”入入int型變量中。顯式型變量中。顯式轉(zhuǎn)換如下:轉(zhuǎn)換如下:轉(zhuǎn)換時,目標類型用括號括起來,放到要轉(zhuǎn)換時,目標類型用括號括起來,放到要修改的表達式的前面。為避免歧義,被轉(zhuǎn)修改的表達式的前面。為避免歧義,被轉(zhuǎn)換的整個表達

20、式最好也用括號括起來換的整個表達式最好也用括號括起來數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)類數(shù)學(xué)函數(shù)類Math,幾個常用的函數(shù)調(diào)用:,幾個常用的函數(shù)調(diào)用:Math.sin(0)/返回返回0.0,這是,這是double類型的值類型的值Math.cos(0)/返回返回1.0 Math.tan(0.5)/返回返回0.5463024898437905 Math.round(6.6)/返回返回7 Math.round(6.3)/返回返回6 Math.ceil(9.2)/返回返回10 .0Math.ceil(-9.8)/返回返回-9 .0Math.floor(9.2)/返回返回9 .0Math.floor(-9.8)/

21、返回返回-10 .0Math.sqrt(144)/返回返回12.0 Math.pow(5,2)/返回返回25.0 Math.exp(2)/返回返回7.38905609893065 Math.log(7.38905609893065) /返回返回2.0 Math.max(560, 289)/返回返回560 Math.min(560, 289)/返回返回289 Math.random()/返回返回0.0到到1.0之間雙精度的一個隨機數(shù)值之間雙精度的一個隨機數(shù)值流控制語句流控制語句語句與表達式語句與表達式 每個表達式都會得到一個值,即表達式的計算每個表達式都會得到一個值,即表達式的計算結(jié)果。語句也會

22、有一個值,但這個值并不是語結(jié)果。語句也會有一個值,但這個值并不是語句的計算結(jié)果,而是執(zhí)行結(jié)果句的計算結(jié)果,而是執(zhí)行結(jié)果語句是語句是JavaJava的最小執(zhí)行單位,語句間以分號(的最小執(zhí)行單位,語句間以分號(; ;)作為分隔符。語句分為簡單語句及復(fù)合語句作為分隔符。語句分為簡單語句及復(fù)合語句 簡單語句就是通常意義下的一條語句,即單語簡單語句就是通常意義下的一條語句,即單語句;而復(fù)合語句是一對花括號句;而復(fù)合語句是一對花括號“ ”和和“ ”括起括起來的語句組,也稱為來的語句組,也稱為“塊塊”,塊后沒有分號,塊后沒有分號表達式語句表達式語句表達式可當作一個值,有的表達式也可當表達式可當作一個值,有的

23、表達式也可當作語句作語句方法調(diào)用通常返回一個值,一般用在表達方法調(diào)用通常返回一個值,一般用在表達式中。有的方法調(diào)用可直接當作語句式中。有的方法調(diào)用可直接當作語句 System.out.println(Hello World!);customer1 = new Customer();point2 = new Point();x = 12;x+;塊塊塊是一對花括號塊是一對花括號“”和和“”括起來的語句組。括起來的語句組。例如:例如:方法體是一個塊。塊還用在流控制的語句方法體是一個塊。塊還用在流控制的語句中,如中,如if語句、語句、switch語句及循環(huán)語句語句及循環(huán)語句 Point point1

24、= new Point();int x = point1.x;分支語句分支語句分支語句共有兩種:分支語句共有兩種:if語句和語句和switch語句語句if語句語句 是單重選擇,最多只有兩個分支。是單重選擇,最多只有兩個分支。 if語句的基本格式是:語句的基本格式是:if (邏輯表達式邏輯表達式)語句語句1;else語句語句2;分支語句分支語句if關(guān)鍵字之后的邏輯表達式必須得到一個邏輯值,關(guān)鍵字之后的邏輯表達式必須得到一個邏輯值,不能象其他語言那樣以數(shù)值來代替。因為不能象其他語言那樣以數(shù)值來代替。因為Java不不提供數(shù)值與邏輯值之間的轉(zhuǎn)換提供數(shù)值與邏輯值之間的轉(zhuǎn)換int x = 3;if (x)

25、.if (x!=0)if 語句常見的形式語句常見的形式形式一:形式一:形式二:形式二:if (邏輯表達式邏輯表達式) /邏輯表達式為邏輯表達式為true時要執(zhí)行的語句時要執(zhí)行的語句; if (邏輯表達式邏輯表達式) /邏輯表達式為邏輯表達式為true時要執(zhí)行的語句時要執(zhí)行的語句;else /邏輯表達式為邏輯表達式為false時要執(zhí)行的語句時要執(zhí)行的語句; if 語句常見的形式三語句常見的形式三形式三(形式三(if語句的嵌套語句的嵌套 ):):if (邏輯表達式邏輯表達式1) /邏輯表達式邏輯表達式1為為true時要執(zhí)行的語句時要執(zhí)行的語句;else if (邏輯表達式邏輯表達式2) /邏輯表達

26、式邏輯表達式1為為false,但邏輯表達式,但邏輯表達式2為為true時要執(zhí)行的語句時要執(zhí)行的語句;else /前面的邏輯表達式全為前面的邏輯表達式全為false時要執(zhí)行的語句時要執(zhí)行的語句;if 語句語句例例3-81int count;2count = getCount(); 3if (count 0) 4 System.out.println(Error: count value is negative!);56else 7 System.out.println(There will be + count +8 people for lunch today.);9if 語句語句else子句

27、屬于邏輯上離它最近的子句屬于邏輯上離它最近的if語句語句if (firstVal = 0)if (secondVal = 1)firstVal+;elsefirstVal-;這兩個匹配這兩個匹配if 語句語句例例3-101if (firstVal = 0)2if (secondVal = 1)3firstVal+;45else6firstVal-;這兩個匹配這兩個匹配switch語句switch語句含義與嵌套的語句含義與嵌套的if語句是類似的,格式更加語句是類似的,格式更加簡捷簡捷switch (表達式表達式) case c1:語句組語句組1;break;case ck:語句組語句組k;bre

28、ak;default:語句組語句組;break;switch語句表達式的計算結(jié)果必須是表達式的計算結(jié)果必須是int型或字符型,型或字符型,即是即是int型賦值相容的。當用型賦值相容的。當用byte、short或或char類型時,要進行提升。類型時,要進行提升。switch語句不語句不允許使用浮點型或允許使用浮點型或long型表達式。型表達式。c1、c2、ck是是int型或字符型常量。型或字符型常量。default子句是可選的,并且,最后一個子句是可選的,并且,最后一個break語句語句完全可以不寫。完全可以不寫。switchswitch語句例語句例例例3-111/ colorNum是整型變量是

29、整型變量2switch (colorNum) 3case 0:4setBackground(Color.red);5break;6case 1:7setBackground(Color.green);8break;9default:10setBackground(Color.black);11break;12 switch語句switch語句和語句和if語句可以互相代替語句可以互相代替例例3-11用用if語句實現(xiàn):語句實現(xiàn):if (colorum = 0)setBackground(Color.red);else if (colorNum = 1)setBackground(Color.gre

30、en);elsesetBackground(Color.black);例3-13使用使用if語句:語句:static int daysInMonth(int month) if (month = 2) return(28); if (month = 4) | (month = 6) | (month = 9) | (month = 11) return(30); return(31); 使用使用switch語句:語句:static int daysInMonth(int month) int days; switch(month) case 2: days = 28; break; case

31、4: case 6: case 9: case 11: days = 30; break; default: days = 31; return(days); 分支語句分支語句程序程序3-4 當主程序執(zhí)行時,如果第一個命令行參數(shù)的首字符分別是數(shù)當主程序執(zhí)行時,如果第一個命令行參數(shù)的首字符分別是數(shù)字、小寫字母及大寫字母時,系統(tǒng)會顯示這個首字符。如果字、小寫字母及大寫字母時,系統(tǒng)會顯示這個首字符。如果輸入的是非數(shù)字或字母,則顯示不是數(shù)字或字母。輸出如圖輸入的是非數(shù)字或字母,則顯示不是數(shù)字或字母。輸出如圖所示:所示:分支語句分支語句如果上述方法中的最后一個如果上述方法中的最后一個break語句(第語

32、句(第32行)不行)不寫的話,程序執(zhí)行完第寫的話,程序執(zhí)行完第30、31行后將不停止,一直行后將不停止,一直執(zhí)行下去。程序的輸出如圖執(zhí)行下去。程序的輸出如圖3-6所示:所示:循環(huán)語句循環(huán)語句三種循環(huán)語句:三種循環(huán)語句:for語句、語句、while語句和語句和do語句語句 for語句語法格式:語句語法格式:for語句的語義是語句的語義是 先執(zhí)行初始語句,判斷邏輯表達式的值,當邏先執(zhí)行初始語句,判斷邏輯表達式的值,當邏輯表達式為真時,執(zhí)行循環(huán)體語句,執(zhí)行迭代輯表達式為真時,執(zhí)行循環(huán)體語句,執(zhí)行迭代語句,然后再去判別邏輯表達式的值。直到邏語句,然后再去判別邏輯表達式的值。直到邏輯表達式的值為假時,循

33、環(huán)結(jié)束輯表達式的值為假時,循環(huán)結(jié)束for (初始語句初始語句; 邏輯表達式邏輯表達式; 迭代語句迭代語句)語句語句;循環(huán)語句循環(huán)語句例例3-14 該段程序共執(zhí)行該段程序共執(zhí)行3次第次第2行的輸出語行的輸出語句(句(i為為0,1,2時)。當時)。當i等于等于3時,邏輯表時,邏輯表達式的值為假,退出循環(huán),執(zhí)行第達式的值為假,退出循環(huán),執(zhí)行第4行語句行語句for (int i = 0; i 3; i+) System.out.println(Are you finished yet?);System.out.println(Finally!);Are you finished yet?Are you

34、 finished yet?Are you finished yet?Finally!循環(huán)語句循環(huán)語句例例3-15for ( ; ; )System.out.println(Always print!);該語句等價于:該語句等價于:for ( ; true ; )System.out.println(Always print!);這段循環(huán)不會停止。這段循環(huán)不會停止。循環(huán)語句循環(huán)語句下面是初始語句及迭代語句包含多個語句下面是初始語句及迭代語句包含多個語句時的情況:時的情況:例例3-16int sumi = 0, sumj = 0;for ( int i = 0, j = 0; j 10; i+,

35、 j+) sumi += i;sumj += j;while循環(huán)while循環(huán)循環(huán) for語句中常常用循環(huán)控制變量顯式控制循環(huán)的語句中常常用循環(huán)控制變量顯式控制循環(huán)的執(zhí)行次數(shù)。當程序中不能明確地指明循環(huán)的執(zhí)執(zhí)行次數(shù)。當程序中不能明確地指明循環(huán)的執(zhí)行次數(shù)時,可以僅用邏輯表達式來決定循環(huán)的行次數(shù)時,可以僅用邏輯表達式來決定循環(huán)的執(zhí)行與否。這樣的循環(huán)可用執(zhí)行與否。這樣的循環(huán)可用while語句來實現(xiàn)語句來實現(xiàn) while循環(huán)的語法是:循環(huán)的語法是:while (邏輯表達式邏輯表達式)語句語句; 和和if語句一樣,語句一樣,while語句中的邏輯表達式亦不語句中的邏輯表達式亦不能用數(shù)值來代替能用數(shù)值來代

36、替循環(huán)語句循環(huán)語句while語句的語義:語句的語義: 計算邏輯表達式,當邏輯表達式為真時,重復(fù)計算邏輯表達式,當邏輯表達式為真時,重復(fù)執(zhí)行循環(huán)體語句,直到邏輯表達式為假時結(jié)束。執(zhí)行循環(huán)體語句,直到邏輯表達式為假時結(jié)束。如果第一次檢查時邏輯表達式為假,則循環(huán)體如果第一次檢查時邏輯表達式為假,則循環(huán)體語句一次也不執(zhí)行。如果邏輯表達式始終為真,語句一次也不執(zhí)行。如果邏輯表達式始終為真,則循環(huán)不會終止則循環(huán)不會終止循環(huán)語句循環(huán)語句例例3-14的的for語句可以改寫為例語句可以改寫為例3-17中的中的while語句語句int i = 0;while (i 3) System.out.println(Ar

37、e you finished yet?);i+;System.out.println(Finally!);do循環(huán)do語句與語句與while語句很相似。它把語句很相似。它把while語語句中的邏輯表達式移到循環(huán)體之后。句中的邏輯表達式移到循環(huán)體之后。do語語句的語法格式是:句的語法格式是:do語句的語義是:語句的語義是: 首先執(zhí)行循環(huán)體語句,然后判定邏輯表達式的首先執(zhí)行循環(huán)體語句,然后判定邏輯表達式的值,當表達式為真時,重復(fù)執(zhí)行循環(huán)體語句,值,當表達式為真時,重復(fù)執(zhí)行循環(huán)體語句,直到表達式為假時結(jié)束。不論邏輯表達式的值直到表達式為假時結(jié)束。不論邏輯表達式的值是真是假,是真是假,do循環(huán)中的循環(huán)

38、體都至少執(zhí)行一次循環(huán)中的循環(huán)體都至少執(zhí)行一次do語句語句;while (邏輯表達式邏輯表達式);循環(huán)語句循環(huán)語句例例例3-181do 2int i = 0;3do 4System.out.println(Are you finished yet?);5i+;6 while (i 3);7System.out.println(Finally!);循環(huán)語句循環(huán)語句for、while及及do語句可互相替代語句可互相替代例如:例如:do語句語句1;while (邏輯表達式邏輯表達式);等價于:等價于:語句語句1;while(邏輯表達式邏輯表達式)語句語句1;break與與continueJava語言拋

39、棄了語言拋棄了goto語句,代之以兩條特語句,代之以兩條特殊的殊的break和和continue語句語句標號標號 標號可以放在標號可以放在for、while或或do語句之前,其語語句之前,其語法格式為:法格式為: 標號標號:語句語句;break語句break語句可用于三類語句中語句可用于三類語句中 一類是一類是switch語句中,一類是語句中,一類是for、while及及do等循環(huán)語句中,還有一類是塊語句中等循環(huán)語句中,還有一類是塊語句中在在switch語句及循環(huán)語句中語句及循環(huán)語句中break的語義是的語義是跳過本塊中余下的所有語句,轉(zhuǎn)到塊尾,跳過本塊中余下的所有語句,轉(zhuǎn)到塊尾,執(zhí)行其后的語句執(zhí)行其后的語句for (int i = 0; i 100; i+) if ( i = 5 )break;System.out.println(i= + i);break語句break語句的第三種使用方法是和標號結(jié)合使用,其語義語句的第三種使用方法是和標號結(jié)合使用,其

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論