第3章Java語言基礎(chǔ)_第1頁
第3章Java語言基礎(chǔ)_第2頁
第3章Java語言基礎(chǔ)_第3頁
第3章Java語言基礎(chǔ)_第4頁
第3章Java語言基礎(chǔ)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)習(xí)導(dǎo)讀 本章是學(xué)習(xí)Java語言必須經(jīng)過的基礎(chǔ)階段,通過本章的學(xué)習(xí),應(yīng)該能夠?qū)ava程序的構(gòu)成有一個(gè)基本的理解,能夠靈活運(yùn)用Java語言提供的各種數(shù)據(jù)類型和運(yùn)算符。面向?qū)ο蟮木幊桃彩且悦嫦蜻^程編程為基礎(chǔ)而發(fā)展起來的,因?yàn)樵趯?duì)象的方法等程序片內(nèi)部,仍然需要嚴(yán)格遵守傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)原則,因此,熟練掌握結(jié)構(gòu)化程序設(shè)計(jì)的三種基本流程是進(jìn)一步學(xué)習(xí)Java面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。,第3章 Java語言基礎(chǔ),教學(xué)重點(diǎn)與難點(diǎn):,Java程序的構(gòu)成 Java的關(guān)鍵字、標(biāo)識(shí)符、各種數(shù)據(jù)類型 Java的常量與變量 Java的各種運(yùn)算符 結(jié)構(gòu)化程序設(shè)計(jì)的三種基本流程,3.1 Java程序的構(gòu)成,Java語言的源

2、程序代碼由一個(gè)或多個(gè)編譯單元組成,每個(gè)編譯單元可包含三個(gè)要素: (1)一個(gè)包聲明(package statement,可選); (2)任意數(shù)量引入語句(import statements); (3)類的聲明(class declarations)和接口聲明(interface declarations)。 該三要素必須以上述順序出現(xiàn)。也就是說任何引入語句出現(xiàn)在所有類定義之前;如果使用包聲明,則包聲明必須出現(xiàn)在類和引入語句之前。每個(gè)Java的編譯單元可包含多個(gè)類或接口,但是每個(gè)編譯單元最多只能有一個(gè)類或者接口是公共的。,3.2 關(guān)鍵字、標(biāo)識(shí)符、數(shù)據(jù)類型、常量與變量,3.2.1 關(guān)鍵字 關(guān)鍵字對(duì)J

3、ava編譯器有特殊的含義,它們可標(biāo)識(shí)數(shù)據(jù)類型名或程序構(gòu)造(construct)名。 表3-1列出了在Java編程語言中使用的關(guān)鍵字。,有關(guān)關(guān)鍵字值得我們注意的地方: (1)true、false和null為小寫,而不是象在C+語言中那樣為大寫。嚴(yán)格地講,它們不是關(guān)鍵字,而是文字。然而,這種區(qū)別是理論上的。 (2)無sizeof運(yùn)算符,因?yàn)樗袛?shù)據(jù)類型的長度和表示是固定的,與平臺(tái)無關(guān),不是象在C語言中那樣數(shù)據(jù)類型的長度根據(jù)不同的平臺(tái)而變化。這正是Java語言的一大特點(diǎn)。 (3)goto和const不是Java編程語言中使用的關(guān)鍵字。,3.2.2 標(biāo)識(shí)符 在Java編程語言中,標(biāo)識(shí)符是賦予變量、類或

4、方法的名稱。變量、函數(shù)、類和對(duì)象的名稱都是標(biāo)識(shí)符,程序員需要標(biāo)識(shí)和使用的東西都需要標(biāo)識(shí)符。標(biāo)識(shí)符可從一個(gè)字母、下劃線(_)或美元符號(hào)($)開始,隨后也可跟數(shù)字、字母、下劃線或美元符號(hào)。標(biāo)識(shí)符是區(qū)分大小寫,沒有長度限制,可以為標(biāo)識(shí)符取任意長度的名字。 下面是幾個(gè)有效的標(biāo)識(shí)符: identifier thisone UserName User_name _system_varl $max,下面是幾個(gè)非法的變量名: 3max (變量名不能以數(shù)字開頭) room# (包含非法字符“#”) class (“class”為保留字) 標(biāo)識(shí)符不能是關(guān)鍵字,但是它可以包含關(guān)鍵字作為它的名字的一部分。例如,thi

5、sone是一個(gè)有效標(biāo)識(shí)符,但this卻不是,因?yàn)閠his是一個(gè)Java關(guān)鍵字。,3.2.3 數(shù)據(jù)類型 Java編程語言有八個(gè)原始數(shù)據(jù)類型,可分為以下四種: 1邏輯類 boolean boolean 數(shù)據(jù)類型有兩種文字值:true和false。 注意在Java編程語言中boolean類型只允許使用boolean值,在整數(shù)類型和boolean類型之間無轉(zhuǎn)換計(jì)算。 在C語言中允許將數(shù)字值轉(zhuǎn)換成邏輯值,這在Java編程語言中是不允許的。,2字符類 char 使用char類型可表示單個(gè)字符,字符是用單引號(hào)括起來的一個(gè)字符,如a,B等。 Java中的字符型數(shù)據(jù)是16位無符號(hào)型數(shù)據(jù),它表示Unicode集,

6、而不僅僅是ASCII集。 與C語言類似,Java也提供轉(zhuǎn)義字符,以反斜杠()開頭,將其后的字符轉(zhuǎn)變?yōu)榱硗獾暮x。 表3-2列出了Java中的轉(zhuǎn)義字符。,值得注意的一點(diǎn)是,用雙引號(hào)引用的文字,就是我們平時(shí)所說的字符串類型不是原始類型,而是一個(gè)類(class)String,它被用來表示字符序列。字符本身符合Unicode標(biāo)準(zhǔn),且上述char類型的轉(zhuǎn)義字符適用于String。 3整數(shù)類 byte,short,int,long 在Java編程語言中有四種整數(shù)類型,每種類型可使用關(guān)鍵字byte, short, int和long中的任意一個(gè)進(jìn)行聲明。所有Java編程語言中的整數(shù)類型都是帶符號(hào)的數(shù)字,不存在

7、無符號(hào)整數(shù)。,整數(shù)類型的文字可使用十進(jìn)制、八進(jìn)制和十六進(jìn)制表示。首位為“0”表示八進(jìn)制的數(shù)值;首位為“0 x”表示16進(jìn)制的數(shù)值。請(qǐng)看下面的例子: 5 表示十進(jìn)制值5 075 表示八進(jìn)制數(shù)值75 (也就是十進(jìn)制數(shù)61) 0 x9ABC 表示十六進(jìn)制的數(shù)值9ABC (也就是十進(jìn)制數(shù)39612) 整數(shù)類缺省為int類型,如在其后有一個(gè)字母“L”表示一個(gè)long值(也可以用小寫“l(fā)”)。由于小寫“l(fā)”與數(shù)字“1”容易混淆,因而,建議大家采用大寫“L”。,上面所說的整數(shù)long的形式如下: 5L 表示十進(jìn)制值5,是一個(gè)long值 075L 表示八進(jìn)制數(shù)值75,是一個(gè)long值 0 x9ABCL 表示十

8、六進(jìn)制的數(shù)值9ABC,是一個(gè)long值 四種整數(shù)類型的存儲(chǔ)空間長度、能表示的范圍是不一樣的,如表3-3所示。,4浮點(diǎn)類 double,float 在Java編程語言中有兩種浮點(diǎn)類型:float和double。如果一個(gè)數(shù)包括小數(shù)點(diǎn)或指數(shù)部分,或者在數(shù)字后帶有字母F或f(float)、D或d(double),則該數(shù)為浮點(diǎn)數(shù)。如果不明確指明浮點(diǎn)數(shù)的類型,浮點(diǎn)數(shù)缺省為double。下面是幾個(gè)浮點(diǎn)數(shù): 3.14159 (double型浮點(diǎn)數(shù)) 2.08E25 (double型浮點(diǎn)數(shù)) 6.56f (float型浮點(diǎn)數(shù)) 在兩種類型的浮點(diǎn)數(shù)中,float為32位(單精度),double為64位(雙精度)。

9、也就是說double類型的浮點(diǎn)數(shù)具有更高的精度。,3.2.4 常量與變量 在Java中,不同類型的數(shù)據(jù)既可以以常量的形式出現(xiàn),也可以以變量的形式出現(xiàn)。 常量就是指在程序執(zhí)行期間其值不能發(fā)生變化的數(shù)據(jù),常量是固定的。如整型常量123,實(shí)型常量1.23,字符常量A,布爾常量true等。 變量的值則是可以變化的,它的定義包括變量名、變量類型和作用域幾個(gè)部分。注意以下幾點(diǎn): (1)變量名必須是一個(gè)合法的標(biāo)識(shí)符。變量名應(yīng)具有一定的含義,以增加程序的可讀性。 (2)變量類型可以為前面所說的任意一種數(shù)據(jù)類型。,(3)聲明一個(gè)變量的同時(shí)也就指明了變量的作用域,變量的作用域指明可訪問該變量的一段代碼。按作用域來

10、分,變量可以有下面幾種:局部變量、類變量、方法參數(shù)、例外處理參數(shù)。 局部(local)變量是在一個(gè)方法內(nèi)定義的變量, 也被稱作自動(dòng)(automatic)、臨時(shí)(temporary)或棧(stack)變量。 當(dāng)執(zhí)行進(jìn)入一個(gè)方法時(shí),局部變量被創(chuàng)建,當(dāng)執(zhí)行離開該方法時(shí),局部變量被清除,它的作用域?yàn)樗诘拇a塊(整個(gè)方法或方法中的某塊代碼)。在成員函數(shù)內(nèi)定義的變量對(duì)該成員變量是“局部的”,因而,你可以在幾個(gè)成員函數(shù)中使用相同的變量名而代表不同的變量。 在一個(gè)確定的域中,變量名應(yīng)該是唯一的。通常,一個(gè)域用大括號(hào)“”和“”來劃定。,(4)下面是幾個(gè)變量的聲明: int a,b,c; /定義a,b,c為i

11、nt型變量 double d,e; /定義d,e為double型變量 float f=2.5,g=5.8; /定義f,g為float型變量,并賦初值 其中,多個(gè)變量間用逗號(hào)隔開。 (5)在Java程序中聲明變量后,需給該變量賦值??捎觅x值語句來初始化變量任何變量都不能沒有初始值(否則,則無法通過編譯)。,賦值方式如下:將已聲明的變量名放在左邊,然后是等號(hào)(),右邊是有適當(dāng)值的Java表達(dá)式。 它的意思是“取得右邊的值,把它復(fù)制到左邊”。右邊的值可以是任何常數(shù)、變量或者表達(dá)式,只要能產(chǎn)生一個(gè)值就行。但左邊的值必須是一個(gè)明確的、已命名的變量。如: int a; /這是聲明 a=45; /這是賦值

12、char c; /這是聲明 c=y; /這是賦值,相對(duì)于一個(gè)方法的“局部”變量,如果在初始化之前想使用它,編譯器會(huì)提示出錯(cuò),如下面這樣就是不允許的: void f() int i; i=i+1; 當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),實(shí)例變量在分配存儲(chǔ)器的同時(shí)被值初始化。初始化值如表3-4所示。,下面給出幾個(gè)Java程序的例子,使大家對(duì)數(shù)據(jù)類型進(jìn)一步加深理解。 【例3.1】 Java中的數(shù)據(jù)類型 【例3.2】 Java中變量的作用域 【例3.3】 Java中對(duì)象的初始化,3.3 運(yùn)算符,按照運(yùn)算符功能來分,基本的運(yùn)算符分包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符等。 3.3.1 算

13、術(shù)運(yùn)算 算術(shù)運(yùn)算符包括加號(hào)(+)、減號(hào)(-)、乘號(hào)(*)、除號(hào)(/)、取模(%)、自增運(yùn)算符(+)、自減運(yùn)算符(-)等。 在算術(shù)運(yùn)算中,有以下值得注意的地方: (1)算術(shù)運(yùn)算符的總體原則是先乘除、再加減,括號(hào)優(yōu)先。 (2)整數(shù)除法會(huì)直接砍掉小數(shù),而不是進(jìn)位。,(3)與C語言不同,對(duì)取模運(yùn)算符%來說,其操作數(shù)可以為浮點(diǎn)數(shù)。如:37.2%10=7.2。 (4)Java也用一種簡寫形式進(jìn)行運(yùn)算,并同時(shí)進(jìn)行賦值操作。例如,為了將10加到變量x,并將結(jié)果賦給x,可用:x+=10。 (5)Java對(duì)加運(yùn)算符進(jìn)行了擴(kuò)展,使它能夠進(jìn)行字符串的連接,如abc+def,得到串a(chǎn)bcdef。 (6)前綴+、-與后綴

14、+、-的區(qū)別: +i(前綴+)在使用i之前,使i的值加1,因此執(zhí)行完+i后,整個(gè)表達(dá)式和i的值均為i+1; i+(后綴+)在使用i之后,使i的值加1,因此執(zhí)行完i+后,整個(gè)表達(dá)式的值為i,而i的值變?yōu)閕+1。,-i在使用i之前,使i的減1,因此執(zhí)行完-i后,整個(gè)表達(dá)式和i的值均為i-1;i-在使用i之后,使i的減1,因此執(zhí)行完i-后,整個(gè)表達(dá)式的值為i,而i的值變?yōu)閕-1。 【例3.4】 Java中算術(shù)運(yùn)算符的使用,3.3.2 關(guān)系運(yùn)算 關(guān)系運(yùn)算符用來比較兩個(gè)值,返回布爾類型的值true或false。關(guān)系運(yùn)算符都是二元運(yùn)算符,如表3-5所示。,對(duì)“或運(yùn)算”如果運(yùn)算符左邊的表達(dá)式的值為true,

15、則整個(gè)表達(dá)式的結(jié)果為true,不必對(duì)運(yùn)算符右邊的表達(dá)式再進(jìn)行運(yùn)算;同樣,對(duì)“與運(yùn)算”,如果左邊表達(dá)式的值為false,則不必對(duì)右邊的表達(dá)式求值,整個(gè)表達(dá)式的結(jié)果為false。 【例3.6】 Java中邏輯運(yùn)算符的使用,3.3.4 位運(yùn)算 在Java語言中,位運(yùn)算符有按位與運(yùn)算符( b=a2;/b=4,運(yùn)算符同樣是執(zhí)行一個(gè)右移位,只是它執(zhí)行的是不帶符號(hào)的移位。也就是說對(duì)以補(bǔ)碼表示的二進(jìn)制數(shù)操作時(shí),在帶符號(hào)的右移中,右移后左邊留下的空位中添入的是原數(shù)的符號(hào)位(正數(shù)為0,負(fù)數(shù)為1);在不帶符號(hào)的右移中,右移后左邊留下的空位中添入的一律是0。 【例3.7】 Java中位運(yùn)算符的使用,3.3.5 類型轉(zhuǎn)

16、換 Java程序里,將一種數(shù)據(jù)類型的常數(shù)或變量轉(zhuǎn)換到另外的一種數(shù)據(jù)類型,稱為類型轉(zhuǎn)換。類型轉(zhuǎn)換有兩種:自動(dòng)類型轉(zhuǎn)換(或稱隱含類型轉(zhuǎn)換)和強(qiáng)制類型轉(zhuǎn)換。 在實(shí)際中常會(huì)將一種類型的值賦給另外一種變量類型。如果這兩種類型是兼容的,Java將執(zhí)行自動(dòng)類型轉(zhuǎn)換。 簡單的說,當(dāng)把占用位數(shù)較短的數(shù)據(jù)轉(zhuǎn)化成占用位數(shù)較長的數(shù)據(jù)時(shí),Java執(zhí)行自動(dòng)類型轉(zhuǎn)換,不需要在程序中作特別的說明。例如,下面的語句把int型數(shù)據(jù)賦值給long型數(shù)據(jù),在編譯時(shí)不會(huì)發(fā)生任何錯(cuò)誤: int i=10; long j=i;,假若對(duì)主數(shù)據(jù)類型執(zhí)行任何算術(shù)運(yùn)算或按位運(yùn)算,“比int小”的數(shù)據(jù)(char、byte、short)在正式執(zhí)行運(yùn)算

17、之前,那些值會(huì)自動(dòng)轉(zhuǎn)換成int,這樣一來,最終生成的值就是int類型。 整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算,轉(zhuǎn)換從低級(jí)到高級(jí)。通常,表達(dá)式中最大的數(shù)據(jù)類型是決定了表達(dá)式最終結(jié)果大小的那個(gè)類型。例如:若將一個(gè)float值與一個(gè)double值相乘,結(jié)果就是double;如將一個(gè)int值和一個(gè)long值相加,則結(jié)果為long。,不是所有的數(shù)據(jù)類型都允許隱含自動(dòng)轉(zhuǎn)換。例如,下面的語句把long型數(shù)據(jù)賦值給int型數(shù)據(jù),在編譯時(shí)就會(huì)發(fā)生錯(cuò)誤: long i=10; int j=i; 這是因?yàn)楫?dāng)把占用位數(shù)較長的數(shù)據(jù)轉(zhuǎn)化成占用位數(shù)較短的數(shù)據(jù)時(shí),會(huì)出現(xiàn)信息

18、丟失的情況,因而不能夠自動(dòng)轉(zhuǎn)換。這時(shí)就需要利用強(qiáng)制類型轉(zhuǎn)換,執(zhí)行非兼容類型之間的類型轉(zhuǎn)換。上面的語句寫成下面的形式就不會(huì)發(fā)生錯(cuò)誤: long i=10; int j=(int)i;,強(qiáng)制類型轉(zhuǎn)換的格式是: (數(shù)據(jù)類型)變量名 經(jīng)過強(qiáng)制類型轉(zhuǎn)換,將得到一個(gè)在“()”中聲明的數(shù)據(jù)類型的數(shù)據(jù),該數(shù)據(jù)是從指定變量所包含的數(shù)據(jù)轉(zhuǎn)換而來的。值得注意的是,指定變量本身不會(huì)發(fā)生任何變化。 將占用位數(shù)較長的數(shù)據(jù)轉(zhuǎn)化成占用位數(shù)較短的數(shù)據(jù)時(shí),可能會(huì)造成數(shù)據(jù)超出較短數(shù)據(jù)類型的取值范圍,造成“溢出”。如: long i=10000000000; int j=(int)i; 因?yàn)檗D(zhuǎn)換的結(jié)果已經(jīng)超出了int型數(shù)據(jù)所能表示的

19、最大整數(shù)(4294967295),造成溢出,產(chǎn)生了錯(cuò)誤。,short a,b,c; a=2; b=3; c=(short)(a+b);,short a,b,c; a=2; b=3; c=a+b;,【例3.8】 Java中的類型轉(zhuǎn)換,3.3.6 其他運(yùn)算符 1三目條件運(yùn)算符(?:) 在Java語言中,三目條件運(yùn)算符(?:)與C語言中的使用規(guī)則是完全一致的,使用的形式是: x ? y:z; 上面的三目條件運(yùn)算的規(guī)則是:先計(jì)算表達(dá)式x的值,若x為真,則整個(gè)三目運(yùn)算的結(jié)果是表達(dá)式y(tǒng)的值;若x為假,則整個(gè)三目運(yùn)算的結(jié)果是表達(dá)式z的值。 下面的例子實(shí)現(xiàn)了從兩個(gè)數(shù)中找出較大的數(shù)的功能。 int a=3,b=

20、4; int max=ab?a:b; max的值為4。,三目條件運(yùn)算是可以嵌套的,如有以下的語句,則max表示的是a、b、c三個(gè)數(shù)中的最大值,其值為5。 int a=3,b=4,c=5; int max=(ab ? a:b)c ? (ab?a:b):c; 2復(fù)合賦值運(yùn)算符 賦值運(yùn)算符“=”的作用是將運(yùn)算符右邊表達(dá)式的值賦給左邊的變量。復(fù)合賦值運(yùn)算符的作用是先進(jìn)行某種運(yùn)算后,再對(duì)運(yùn)算的結(jié)果進(jìn)行賦值操作。 Java可以用一種簡寫形式進(jìn)行運(yùn)算,并同時(shí)進(jìn)行賦值操作。例如,為了將10加到變量x,并將結(jié)果賦給x,可用:x+=10(等價(jià)與x=x+10)。 實(shí)際上不只是“+”可以這么做,表3-7列出了Java

21、中的所有復(fù)合賦值運(yùn)算符。,3對(duì)象運(yùn)算符(instanceof) 對(duì)象運(yùn)算符instanceof用來判斷一個(gè)對(duì)象是否是某一個(gè)類或者其子類的實(shí)例。如果對(duì)象是該類或者其子類的實(shí)例,返回ture;否則返回flase。 4()和 括號(hào)運(yùn)算符()的優(yōu)先級(jí)是所有運(yùn)算符中最高的,所以它可以改變表達(dá)式運(yùn)算的先后順序。在有些情況下,它可以表示方法或函數(shù)的調(diào)用。 方括號(hào)運(yùn)算符 是數(shù)組運(yùn)算符。 5 運(yùn)算符 運(yùn)算符用于訪問對(duì)象實(shí)例或者類的類成員函數(shù)。 6new運(yùn)算符 new運(yùn)算符用于創(chuàng)建一個(gè)新的對(duì)象或者新的數(shù)組。,3.3.7 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 優(yōu)先級(jí)決定了同一表達(dá)式中多個(gè)運(yùn)算符被執(zhí)行的先后次序,如乘除運(yùn)算優(yōu)先于加

22、減運(yùn)算,同一級(jí)里的運(yùn)算符具有相同的優(yōu)先級(jí)。運(yùn)算符的結(jié)合性則決定了相同優(yōu)先級(jí)的運(yùn)算符的執(zhí)行順序。 表3-8列出了Java中運(yùn)算符的優(yōu)先級(jí)與結(jié)合性。 因?yàn)槔ㄌ?hào)優(yōu)先級(jí)最高,所以不論任何時(shí)候,當(dāng)我們一時(shí)無法確定某種計(jì)算的執(zhí)行次序時(shí),可以使用加括號(hào)的方法來明確指定運(yùn)算的順序,這樣不容易出錯(cuò),同時(shí)也是提高程序可讀性的一個(gè)重要方法。,3.4 流程控制語句,3.4.1 結(jié)構(gòu)化程序設(shè)計(jì)的三種基本流程 1自頂向下 2逐步求精 3模塊化 除了以上的原則,結(jié)構(gòu)化程序設(shè)計(jì)還有一個(gè)重要的規(guī)定,那就是只能使用“順序結(jié)構(gòu)”、“選擇結(jié)構(gòu)”、“循環(huán)結(jié)構(gòu)”這三種基本結(jié)構(gòu)(或由它們派生出來的結(jié)構(gòu))來定義程序的流程。 三種基本流程控制

23、結(jié)構(gòu)示意圖分別如圖3-1所示。,3.4.2 選擇結(jié)構(gòu) 如圖3-1(b)所示,選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),是在兩種或兩種以上的多條執(zhí)行路徑中選擇一條執(zhí)行的控制結(jié)構(gòu)。 1ifelse語句 if(條件表達(dá)式) 語句組1; else 語句組2; ,在ifelse語句中,else部分是選擇性的。經(jīng)??梢钥吹街挥衖f語句,而沒有else語句的情況。在這種情況下,當(dāng)測試條件為假時(shí)如不需做任何事,else部分可被省略。這時(shí),其語法形式如下: if(條件表達(dá)式) 語句組; 其流程如圖3-3所示。 【例3.9】 求三個(gè)數(shù)中的最大者,2switch語句 switch語句(又稱開關(guān)語句)是和case語句一起使用的,其功能

24、是根據(jù)某個(gè)表達(dá)式的值在多個(gè)case引導(dǎo)的多個(gè)分支語句中選擇一個(gè)來執(zhí)行。它的一般格式如下: switch(表達(dá)式) case 判斷值1:語句塊1 case 判斷值2:語句塊2 case 判斷值3:語句塊3 case 判斷值n:語句塊n default:語句塊n+1 ,switch后面括號(hào)中表達(dá)式的值必須是符合byte,char,short,int類型的常量表達(dá)式,而不能用浮點(diǎn)類型或long類型,也不能為一個(gè)字符串。 一個(gè)switch語句可以代替多個(gè)ifelse語句組成的分支結(jié)構(gòu),而switch語句從思路上顯得更清晰。 【例3.10】 根據(jù)不同的四則運(yùn)算符(+、-、*、/),對(duì)兩個(gè)實(shí)數(shù)執(zhí)行相應(yīng)的運(yùn)

25、算并輸出結(jié)果。 【例3.11】 對(duì)例3.10的修改,3.4.3 循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)是程序中一種重要的基本結(jié)構(gòu),是指在一定的條件下反復(fù)執(zhí)行某段程序,被反復(fù)執(zhí)行的這段程序稱為“循環(huán)體”。 Java中有三種語句來實(shí)現(xiàn)循環(huán)結(jié)構(gòu),分別是while,do-while和for語句。 它們的結(jié)構(gòu)分別如圖3-4所示。,1while語句 while語句的格式如下: while(條件表達(dá)式) 循環(huán)體語句; 在循環(huán)剛開始時(shí),會(huì)計(jì)算一次“條件表達(dá)式”的值。當(dāng)條件為假時(shí),將不執(zhí)行循環(huán)體,直接跳轉(zhuǎn)到循環(huán)體外,執(zhí)行循環(huán)體外的后續(xù)語句;當(dāng)條件為真時(shí),便執(zhí)行循環(huán)體。每執(zhí)行完一次循環(huán)體,都會(huì)重新計(jì)算一次條件表達(dá)式,當(dāng)條件為真時(shí),便

26、繼續(xù)執(zhí)行循環(huán)體,直到條件為假才結(jié)束循環(huán)。while語句的結(jié)構(gòu)如圖3-4(a)所示。 【例3.12】 用while語句計(jì)算10的階乘,2do-while語句 do-while語句的格式如下: do 循環(huán)體語句; while(條件表達(dá)式) do-while循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的語句,然后再判斷條件是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。 do-while語句的結(jié)構(gòu)如圖3-4(b)所示。 【例3.13】 用do-while語句計(jì)算10的階乘,3for語句 for語句是三個(gè)循環(huán)語句中功能最強(qiáng),使用最廣泛的一個(gè)。fo

27、r語句的格式如下: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語句; 表達(dá)式1一般是一個(gè)賦值語句,它用來給循環(huán)控制變量賦初值;表達(dá)式2是一個(gè)布爾類型的表達(dá)式,它決定什么時(shí)候退出循環(huán);表達(dá)式3一般用來修改循環(huán)變量,控制變量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用“;”分開。 for語句的結(jié)構(gòu)如圖3-4(c)所示。,for語句的執(zhí)行過程: (1)在循環(huán)剛開始時(shí),先計(jì)算表達(dá)式1,在這個(gè)過程中,一般完成的是初始化循環(huán)變量或其它變量。 (2)根據(jù)表達(dá)式2的值來決定是否執(zhí)行循環(huán)體。表達(dá)式2是一個(gè)返回布爾值的表達(dá)式,若該值為假,將不執(zhí)行循環(huán)體,并退出循環(huán);若該值為真,將執(zhí)行循環(huán)體。 (3)執(zhí)行完一次

28、循環(huán)體后,計(jì)算表達(dá)式3。在這個(gè)過程中一般會(huì)修改循環(huán)變量。 (4)轉(zhuǎn)入第(2)步繼續(xù)執(zhí)行。 【例3.14】 用for語句計(jì)算10的階乘 【例3.15】 for語句的嵌套,3.4.4 跳轉(zhuǎn)語句 跳轉(zhuǎn)語句用來實(shí)現(xiàn)循環(huán)執(zhí)行過程中的流程轉(zhuǎn)移。在switch語句中使用過的break語句就是一種跳轉(zhuǎn)語句。在Java語言中,有兩種跳轉(zhuǎn)語句:break語句和continue語句。 在Java語言中,可用break和continue控制循環(huán)的流程。其中,break用于強(qiáng)行退出循環(huán),不執(zhí)行循環(huán)中剩余的語句。而continue則停止執(zhí)行當(dāng)前的循環(huán),開始新的循環(huán)。 break語句和continue語句都有兩種使用的形式:一種是不帶標(biāo)號(hào)的brea

溫馨提示

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