Java程序設(shè)計(jì)基礎(chǔ)(第2版) 課件 第2章 Java語言基礎(chǔ)(第2版)_第1頁
Java程序設(shè)計(jì)基礎(chǔ)(第2版) 課件 第2章 Java語言基礎(chǔ)(第2版)_第2頁
Java程序設(shè)計(jì)基礎(chǔ)(第2版) 課件 第2章 Java語言基礎(chǔ)(第2版)_第3頁
Java程序設(shè)計(jì)基礎(chǔ)(第2版) 課件 第2章 Java語言基礎(chǔ)(第2版)_第4頁
Java程序設(shè)計(jì)基礎(chǔ)(第2版) 課件 第2章 Java語言基礎(chǔ)(第2版)_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章Java語言基礎(chǔ)

ElementaryProgramminginJava董東計(jì)算機(jī)與網(wǎng)絡(luò)空間安全學(xué)院1內(nèi)容2.1標(biāo)識(shí)符2.2基本數(shù)據(jù)類型2.3字面量2.4變量2.5運(yùn)算符2.6運(yùn)算符的優(yōu)先級(jí)2.6表達(dá)式和語句 2.7控制臺(tái)輸入和輸出 2.8控制結(jié)構(gòu)2.9數(shù)組22.1標(biāo)識(shí)符和保留字標(biāo)識(shí)符必須以字母(包括Unicode字母)、下劃線(_)或美元符號(hào)($)開始;除了第一個(gè)字符外,其余部分由字母、數(shù)字、下劃線或美元符號(hào)組成;不能使用Java保留字作為標(biāo)識(shí)符,如class、public、void等;標(biāo)識(shí)符中不能含有特殊符號(hào),即非字母、數(shù)字、下劃線或美元符號(hào)。如嘆號(hào)(!)at號(hào)(@)數(shù)字符號(hào)(#)百分號(hào)(%)與號(hào)(&)尖號(hào)(^)星號(hào)(*)空格

3注意不能使用Java保留字,如class、public、void等作為標(biāo)識(shí)符;不要使用漢語拼音作為標(biāo)識(shí)符!比如使用graduateStudent而不是yanJiuSheng。4駝峰命名法對(duì)于類名使用大駝峰命名法每個(gè)單詞首字母大寫如MyCar對(duì)于變量名則采用小駝峰命名法首個(gè)單詞首字母小寫,后續(xù)單詞首字母大寫如licenceNumber)5保留字6Java17基本數(shù)據(jù)類型數(shù)據(jù)類型(datatype)是包含了值以及在這些值上的操作的集合。Java中有兩種類型:引用類型(referencetypes)基本數(shù)據(jù)類型(primitivetypes)引用類型包括三種:類(class)接口(interface)數(shù)組(array)基本數(shù)據(jù)類型有八種:boolean、char、byte、short、int、long、double和float。7所謂“引用”,就是用來訪問對(duì)象的標(biāo)識(shí)。boolean數(shù)據(jù)類型boolean表示邏輯值邏輯值只有兩個(gè):truefalse8char數(shù)據(jù)類型char表示了Unicode字符集及其上的操作9char源程序中的字符要使用單引號(hào)('')括起來。例如,'a' //字母a'\t' //制表符也可以使用Unicode編碼來表示字符,如'\u0061'就是'a'。在'\u0061'中,0061是4位的十六進(jìn)制數(shù)字,表示了英文字母“a”在Unicode字符集中的編號(hào);“\u”表示把“0061”轉(zhuǎn)義為1個(gè)Unicode字符而不是4個(gè)普通十六進(jìn)制數(shù)字。10char字符串是字符序列。Java中使用類型String表示字符串,但是它不是基本數(shù)據(jù)類型11數(shù)值Java中把數(shù)值分成兩類:整數(shù)浮點(diǎn)數(shù)所有數(shù)值類型都是有符號(hào)的,也就是說都有正數(shù)和負(fù)數(shù)12整數(shù)13浮點(diǎn)數(shù)浮點(diǎn)類型float共32比特(4字節(jié))有效數(shù)字使用24比特浮點(diǎn)類型double共64比特(8字節(jié))有效數(shù)字部分53比特14浮點(diǎn)數(shù)的“精度”指有效數(shù)字的位數(shù)注意浮點(diǎn)數(shù)不能精確地表示所有的實(shí)數(shù)。比如十進(jìn)制數(shù)0.1只能被近似表示為二進(jìn)制數(shù)0.0001100110011001100110011010。float類型的0.1與實(shí)數(shù)0.1的誤差為2-25。152.3字面量字面量(literal)是值在源代碼中的文本表示。根據(jù)數(shù)據(jù)類型不同,Java中字面量有:布爾字面量字符字面量整數(shù)字面量浮點(diǎn)數(shù)字面量字符串字面量(String類型)16字面量布爾字面量只有兩個(gè):true和false。字符字面量就是單個(gè)的Unicode字符。使用英文單引號(hào)把字符引起來以區(qū)別該符號(hào)不是標(biāo)識(shí)符。例如,在源代碼中使用字母a,則要寫成'a'。諸如換行之類的特殊字符,則使用轉(zhuǎn)義符號(hào)(\)。例如,'\n'表示換行符。17UnicodeJava將字符字面量按16位Unicode字符編譯。Unicode字符集把一個(gè)字符映射到一個(gè)整數(shù),稱為Unicode代碼點(diǎn)最小是0,最大是65535使用十六進(jìn)制表示就是從0000到FFFFJava中可以使用Unicode轉(zhuǎn)義'\u0000'到'\uffff'來表示單個(gè)字符,其中u的意思就是Unicode。18轉(zhuǎn)義19字符串字面量字符串字面量是使用雙引號(hào)引起了的字符序列例如"Java"注意無論單引號(hào)還是雙引號(hào),都是英文引號(hào)而不是中文引號(hào)20整數(shù)字面量根據(jù)進(jìn)制不同,整數(shù)字面量分為十進(jìn)制整數(shù)、十六進(jìn)制整數(shù)、八進(jìn)制和二進(jìn)制整數(shù)。默認(rèn)使用十進(jìn)制整數(shù),例如12。如果想使用十六進(jìn)制整數(shù),則需要在數(shù)字序列前面添加“0x”或者“0X”前綴。例如0xC表示十進(jìn)制數(shù)12。要在八進(jìn)制整數(shù)前添加前綴“0”,例如014表示十進(jìn)制數(shù)12。Java7BinaryLiterals:0b00110101Java默認(rèn)所有整數(shù)字面量的數(shù)據(jù)類型為int。如果指定整數(shù)字面量為long類型,則需要在數(shù)字的末尾添加后綴“L”或者“l(fā)”。例如12L表示整數(shù)12為long類型。21例子byteb=0x7f; //127,十六進(jìn)制8位整數(shù)intx=0b101; //5,二進(jìn)制32位整數(shù)inti=0x1f; //31,十六進(jìn)制32位整數(shù)intj=0X1F; //31,十六進(jìn)制32位整數(shù)intk=31; //31,十進(jìn)制32位整數(shù)longm=200L; //200,十進(jìn)制64位整數(shù)longn=200l; //200,十進(jìn)制64位整數(shù)22注意不能把“寬”的字面量賦值給“窄”的變量例如byteb=0x7ff0x7ff是32位整數(shù),賦值給8位的變量,編譯會(huì)提示錯(cuò)誤。但是編譯器并不對(duì)byteb=0x7f;提示錯(cuò)誤,這是因?yàn)榫幾g器識(shí)別到雖然0x7f是32位整數(shù),但高24位都是0,截?cái)嗪鬀]有損失。23浮點(diǎn)數(shù)字面量浮點(diǎn)數(shù)字面量有兩種表示形式:標(biāo)準(zhǔn)形式和科學(xué)記數(shù)形式。例如583.45(標(biāo)準(zhǔn)形式)或者1.23e+2(科學(xué)記數(shù)形式)。字面量1.23e+2表示數(shù)字1.23×102=123。注意,1.23e+2與1.23e2含義相同?!癳”表示指數(shù)(exponent),可以是大寫“E”。Java默認(rèn)浮點(diǎn)字面量是double類型。如果要指定為float類型,則需要在數(shù)字的末尾添加后綴“F”或者“f”。24例子floatf1=128.6F; //32-bit浮點(diǎn)數(shù)floatf2=128.6f; //32-bit浮點(diǎn)數(shù)floatf3=1e-45f; //10-45,科學(xué)記數(shù)形式floatf4=1e+9f; //109,科學(xué)記數(shù)形式doubled1=1256.8d; //64-bit浮點(diǎn)數(shù)doubled2=1256.8D; //64-bit浮點(diǎn)數(shù)doubled3=1.2568e3d; //1.2568×103

//科學(xué)記數(shù)形式25變量變量(variable)是一個(gè)命名的存儲(chǔ)單元(cell)。該存儲(chǔ)單元中的內(nèi)容在程序運(yùn)行期間可能會(huì)被改變變量的數(shù)據(jù)類型決定了存儲(chǔ)單元的大小變量必須先聲明其數(shù)據(jù)類型才能使用26變量的四種類型實(shí)例變量(InstanceVariables)每個(gè)對(duì)象都有的成員變量類變量(ClassVariables)聲明成員變量時(shí)如果使用保留字static修飾,則是類變量局部變量(LocalVariables)在方法體中聲明的變量稱為局部變量方法每被調(diào)用一次就會(huì)為方法體中的局部變量重新分配一次存儲(chǔ)形式參數(shù)(Parameters)方法的形式參數(shù)也是局部變量27聲明變量聲明變量的語法:

<數(shù)據(jù)類型><變量名>[=<初值>];28例子intx; //聲明整數(shù)類型的變量,名字為x;doubleradius; //聲明浮點(diǎn)數(shù)類型變量,名字為radius;chara; //聲明字符類型變量,名字為a;//聲明浮點(diǎn)類型變量,名字為grade,初值為0.0doublegrade=0.0;29多個(gè)變量可以一起直接聲明并初始化例如:

intx,y;inta=3,b=4,c=5;30輸出變量的值System.out.println()System.out.print()System是一個(gè)內(nèi)置的Java類,out是System類中聲明的成員變量,通過該變量引用了一個(gè)負(fù)責(zé)進(jìn)行顯示輸出的對(duì)象。System.out.println("Hello")的意思是:執(zhí)行System.out對(duì)象上的方法println()顯示輸出字符串“Hello”。31例子輸出為:10Thevalueofx=A32intvalue=10;charx;x=‘A’;

System.out.println(value);System.out.println("Thevalueofx="+x);Java中有兩種數(shù)據(jù)類型的變量:基本數(shù)據(jù)類型引用數(shù)據(jù)類型基本數(shù)據(jù)類型的變量把數(shù)據(jù)存放在該變量名標(biāo)識(shí)的存儲(chǔ)單元中;而引用類型的變量?jī)H僅在該變量名標(biāo)識(shí)的存儲(chǔ)單元中存放實(shí)際數(shù)據(jù)的地址,即指向了存放實(shí)際數(shù)據(jù)的存儲(chǔ)單元。33例inti=10; //基本數(shù)據(jù)類型Stringname="Donald"; //引用數(shù)據(jù)類型34類型的自動(dòng)轉(zhuǎn)換在進(jìn)行表達(dá)式計(jì)算時(shí),Java能夠自動(dòng)地把“窄”數(shù)據(jù)類型轉(zhuǎn)換為“寬”的數(shù)據(jù)類型。所謂“窄”,就是該數(shù)據(jù)類型所用的存儲(chǔ)字節(jié)少;所謂“寬”,就是該數(shù)據(jù)類型所用的存儲(chǔ)字節(jié)多。例如,如果程序中有表達(dá)式2*0.3,那么就會(huì)把2轉(zhuǎn)換為double類型,然后再和double類型的字面量0.3相乘。自動(dòng)轉(zhuǎn)換的規(guī)則:35轉(zhuǎn)型在變量前面添加括號(hào)括起來的數(shù)據(jù)類型就能把該變量轉(zhuǎn)型為此數(shù)據(jù)類型。例如,下面的的賦值語句就把long類型的變量g賦值給了int類型的i:inti;longg=100;i=(int)g;轉(zhuǎn)型運(yùn)算(int)把long值轉(zhuǎn)換成int值。36轉(zhuǎn)型的例子37publicclassCastingDemo{publicstaticvoidmain(String[]argv){inti;doublej=2.75;i=j; //編譯錯(cuò)誤

i=(int)j; //顯式轉(zhuǎn)型;i的值為2

System.out.printf("%s%d%n","i=",i);longb;b=i; //沒有編譯錯(cuò)誤System.out.printf("%s%d%n","b=",b);}}注意在對(duì)byte、short和char這三種數(shù)據(jù)類型變量使用字面量初始化時(shí),如果初值在其數(shù)據(jù)類型的取值范圍內(nèi),編譯器自動(dòng)優(yōu)化為該數(shù)據(jù)類型。例如,byteb=0x2A;仍然會(huì)把值42存入變量b而不會(huì)出現(xiàn)編譯錯(cuò)誤,雖然字面量0x2A是一個(gè)整數(shù);在byteb=0x8A;中0X8A是正整數(shù)138,超出了byte類型的范圍[-128,127],所以會(huì)出現(xiàn)編譯錯(cuò)誤。38運(yùn)算符Java語言中的運(yùn)算符有賦值運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符39賦值運(yùn)算符賦值(assignment)運(yùn)算符用以向變量名標(biāo)識(shí)的存儲(chǔ)單元中存放一個(gè)值。40inta=1; //把1賦值給變量aintb=2+3; //把表達(dá)式2+3的運(yùn)算結(jié)果賦值給bStringname="Donald"; //把字符串(String對(duì)象)"Donald"的引用賦值

給引用類型變量nameintd=a=b; //把b賦值給a,然后把a(bǔ)賦值給d算術(shù)運(yùn)算符41注意如果a和b都是整數(shù),那么除運(yùn)算/只保留商而舍棄余數(shù)。如果a和b其中有一個(gè)是浮點(diǎn)數(shù),則執(zhí)行浮點(diǎn)數(shù)的除法運(yùn)算。例如5/2的結(jié)果是25.0/2、5/2.0、5.0/2.0的結(jié)果都是2.5。取余運(yùn)算符%也稱為模運(yùn)算符,其結(jié)果是整數(shù)除法運(yùn)算a/b的余數(shù)。取余運(yùn)算a%b結(jié)果的符號(hào)取決于第一個(gè)操作數(shù)a。42注意如果一個(gè)運(yùn)算符有兩個(gè)操作數(shù),則稱其為雙目運(yùn)算符(binaryoperator);如果只有一個(gè)操作數(shù),則稱其為單目運(yùn)算符(unaryoperator)。當(dāng)算術(shù)運(yùn)算符+和–用作單目運(yùn)算符時(shí),就表示正數(shù)和負(fù)數(shù)。運(yùn)算符++和--也是單目運(yùn)算符。增量運(yùn)算符(++)把操作數(shù)增1減量運(yùn)算符(--)從其操作數(shù)中減去1a++在功能上等價(jià)于a=a+1。43后綴形式和前綴形式如果++和--寫在變量的后面,則稱為該運(yùn)算符的后綴形式(postfixform)反之,如果++和--寫在變量的前面,則稱為該運(yùn)算符的前綴形式(prefixform)后綴形式和前綴形式表達(dá)式的計(jì)值結(jié)果是不同的。例如,假設(shè)變量i的當(dāng)前值是1,下面的語句將使j的值為1而i的變?yōu)?:j=i++;但是,下面語句使i和j的值為2:j=++i;44運(yùn)算符+當(dāng)運(yùn)算符+的兩個(gè)操作數(shù)中存在字符串時(shí)則進(jìn)行字符串連接運(yùn)算而當(dāng)操作數(shù)中存在字符時(shí)則進(jìn)行整數(shù)加法運(yùn)算45OperatorAdditionDemo.java關(guān)系運(yùn)算符46OperatorComparisonDemo.java邏輯運(yùn)算符47OperatorLogicalDemo.java條件運(yùn)算符<邏輯表達(dá)式>?<表達(dá)式1>:<表達(dá)式2>max=(a>b)?a:b;48if(a>b){max=a;} else{max=b;}位運(yùn)算符直接針對(duì)二進(jìn)制位進(jìn)行操作的運(yùn)算符稱為位運(yùn)算符位運(yùn)算符有兩類:按位邏輯運(yùn)算符按位與&按位或|按位異或^按位否~移位運(yùn)算符左移1位<<有符號(hào)右移1位>>無符號(hào)右移1位>>>49按位邏輯運(yùn)算只有當(dāng)兩位相同時(shí)為1時(shí)按位與&的運(yùn)算結(jié)果才為1,無論是否符號(hào)位當(dāng)兩位中存在一位為1時(shí)按位或|的運(yùn)算結(jié)果就1,無論是否符號(hào)位當(dāng)兩位相同時(shí)按位異或^運(yùn)算結(jié)果為0;不同時(shí)運(yùn)算結(jié)果為1按位非~就是把1變?yōu)?,把0變?yōu)?。50OperatorBitWiseLogicalDemo移位運(yùn)算符左移運(yùn)算符把二進(jìn)制位向左移動(dòng)指定的位數(shù),符號(hào)位一起移動(dòng),低位補(bǔ)0。右符號(hào)右移運(yùn)算符>>把二進(jìn)制位向右移動(dòng)指定的位數(shù),符號(hào)位一起移動(dòng),高位補(bǔ)原符號(hào)位。無符號(hào)右移運(yùn)算符>>>把二進(jìn)制位向右移動(dòng)指定的位數(shù),高位補(bǔ)0。51OperatorShiftDemo.java運(yùn)算符的優(yōu)先級(jí)比如1+2*3,先算1+2,還是先算2*3?這取決于*的優(yōu)先級(jí)是否高于+。52運(yùn)算符優(yōu)先級(jí)與結(jié)合性53表達(dá)式和語句一個(gè)字面量、一個(gè)變量就是最簡(jiǎn)單的表達(dá)式(expression),通過各類運(yùn)算符連接的表達(dá)式形成新的表達(dá)式。表達(dá)式的值就是對(duì)其中字面量、變量按照運(yùn)算符計(jì)值后的結(jié)果。假設(shè)x和y都是int類型變量,x中已經(jīng)存儲(chǔ)了整數(shù)2,下面都是表達(dá)式:12x12+xy=x+354這些表達(dá)式的值分別是12、2、14、5注意賦值表達(dá)式y(tǒng)=x+3還能用在另外一個(gè)表達(dá)式中:z=(y=x+3)*4這使得變量y中存放5,變量z中存放20。表達(dá)式中還可以包含方法調(diào)用。例如下面的表達(dá)式中包含的Math類中的方法abs()調(diào)用,用來計(jì)算絕對(duì)值:5*(Math.abs(-20)/4)55語句語句(statement)是以分號(hào)(;)結(jié)束的完整的基本執(zhí)行單元。Java中的語句有表達(dá)式語句、聲明語句和控制流語句。表達(dá)式語句用來改變變量的值、調(diào)用方法和創(chuàng)建對(duì)象。聲明語句用來聲明變量??刂屏髡Z句確定語句的執(zhí)行順序。56語句inti;//聲明語句i=1;//表達(dá)式語句if(i<10){//控制流語句

System.out.println(i);//表達(dá)式語句}57塊使用大括號(hào)把若干條語句括起來,就成為塊(block)形如:58{<語句序列>}控制臺(tái)輸入和輸出控制臺(tái)(console)指的是與主機(jī)平臺(tái)交互的命令行界面通過java.util.Scanner對(duì)象可以方便地從控制臺(tái)中讀取基本數(shù)據(jù)類型的數(shù)據(jù)Scanner默認(rèn)使用空白符作為分隔符把輸入串分割成詞元(token)空格、制表符、回車、換行、進(jìn)紙等都稱為空白符59Scanner類比如以空格作為分隔符如下字符序列:123.14Car則Scanner可以識(shí)別為整數(shù)12、浮點(diǎn)數(shù)3.14和字符串Car三個(gè)記號(hào)。60Scanner默認(rèn)Scanner使用空白符作為分隔符??瞻追梢允且粋€(gè)或若干個(gè)空格、制表符、進(jìn)紙、回車符或者換行符。61例運(yùn)行程序,根據(jù)提示“Enteraninteger,adoublevalueandastring:”,輸入:123.14Car注意以空格隔開這三個(gè)數(shù)據(jù),然后回車,程序顯示:Yourintegeris:12Yourdoublevalueis:3.14Yourstringis:Car62ScannerDemo.java例System.in是在System類中定義的靜態(tài)變量,引用標(biāo)準(zhǔn)輸入流對(duì)象,其類型為java.io.InputStream這個(gè)輸入流默認(rèn)連接到鍵盤,允許程序接收用戶輸入的數(shù)據(jù)以其作為參數(shù)調(diào)用Scanner類的構(gòu)造方法創(chuàng)建了一個(gè)Scanner對(duì)象用來從控制臺(tái)讀入數(shù)據(jù)63System.out是System中定義的靜態(tài)變量,引用標(biāo)準(zhǔn)輸出流對(duì)象,默認(rèn)連接顯示器printf()是out的實(shí)例方法,提供了與C語言中的printf函數(shù)相同的語法和功能。64nextXxx方法Scanner類為每一種基本數(shù)據(jù)類型都提供了相應(yīng)的nextXxx方法用讀取該類型的值。例如:nextBooleannextBytenextShortnextLongnextDoublenextFloatnextLine其中,nextLine方法以字符串返回下一行。如果不想讀取一整行,而執(zhí)行讀取下個(gè)記號(hào),則使用next方法。next方法以字符串形式返回下個(gè)記號(hào)。65如果期望輸入的數(shù)據(jù)類型與實(shí)際輸入的數(shù)據(jù)類型不匹配,那么就會(huì)拋出InputMismatchException異常。例如期望輸入一個(gè)整數(shù)12,而卻錯(cuò)誤地輸入了浮點(diǎn)數(shù):Enteraninteger:3.14Exceptioninthread"main"java.util.InputMismatchExceptionhasNextXxx方法booleanhasNextBoolean()booleanhasNextByte()booleanhasNextShort()booleanhasNextLong()booleanhasNextDouble()booleanhasNextFloat()booleanhasNextLine()booleanhasNext()66注意如果想僅讀入一個(gè)字符,而不是字符串67CharInputDemo.java注意如果想得到字符數(shù)組,那么可以使用nextLine方法作為字符串讀入一行,然后使用字符串對(duì)象的toCharArray方法把字符串轉(zhuǎn)換為字符數(shù)組。68控制結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)69順序結(jié)構(gòu)70

x=5;x=x+2;活動(dòng)圖(activitydiagram)活動(dòng)圖中最主要的符號(hào)就是圓角矩形框,表示一個(gè)活動(dòng)一個(gè)活動(dòng)至少含有一個(gè)動(dòng)作其它常用的圖形符號(hào)還有初始結(jié)點(diǎn)、終止結(jié)點(diǎn)、控制流、判定、守衛(wèi)條件等。一個(gè)圓角框到另外一個(gè)圓角框的帶箭頭的連線表示控制流,意味著一個(gè)活動(dòng)執(zhí)行完畢另外一個(gè)活動(dòng)才能開始。初始結(jié)點(diǎn)使用實(shí)心圓表示;終止結(jié)點(diǎn)使用有環(huán)的實(shí)心圓表示。71分支結(jié)構(gòu)72intx=-1;intresult=x;if(x<0){result=-x;}分支結(jié)構(gòu)73其中if語句的一般形式是:if(<邏輯表達(dá)式>)<語句>;分支結(jié)構(gòu)74if(<邏輯表達(dá)式>){<語句1>;<語句2>;……}例計(jì)算絕對(duì)值75其中的菱形表示判定結(jié)點(diǎn),對(duì)應(yīng)于程序中的分支語句。從判定結(jié)點(diǎn)出發(fā)的控制流上通常標(biāo)記守衛(wèi)條件。守衛(wèi)條件是中括號(hào)括起來的邏輯表達(dá)式。意思是只有滿足該條件,才能運(yùn)行控制流通過。例76intx=-1;inty=0;if(x<0){y=2*x*x+1;

}else{y=6*x-4;}條件表達(dá)式:IfElseDemo.javaif-else語句77if(<邏輯表達(dá)式>){<語句1>;<語句2>;...}else{<語句3>;<語句4>;...}嵌套if語句78 if(<邏輯表達(dá)式1>){

……//塊1 }elseif(<邏輯表達(dá)式2>){

……//塊2 }

…… elseif(<邏輯表達(dá)式n>){

……//塊n }else{

……//塊n+1 }IfElseIfDemo.javaswitch語句79<表達(dá)式>是整型、字符類型、枚舉類型或者字符串<語句序列>是0條或多條語句當(dāng)程序執(zhí)行到該語句,首先對(duì)

<表達(dá)式>計(jì)值,把計(jì)值結(jié)果與<值1>進(jìn)行比較,如果匹配則執(zhí)行<語句序列1>、<語句序列2>、……、<語句序列n>、<語句序列n+1>;否則與<值2>進(jìn)行比較,如果匹配則執(zhí)行<語句序列2>、……、<語句序列n>、<語句序列n+1>;當(dāng)與<值n>匹配失敗時(shí)執(zhí)行default中<語句序列n+1>。switch(<表達(dá)式>){case<值1>:<語句序列1>case<值2>:<語句序列2>……case<值n>:<語句序列n>default:<語句序列n+1>}例把中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字80無break:SwitchDemo.java有break:SwitchBreakDemo.java

輸入“一”,程序的輸出10而不是期望的1switch語句常見形式81switch(<表達(dá)式>){case<值1>:<語句序列>break;case<值2>:<語句序列>break;default:<語句序列>}因?yàn)榇蠖嗍欠种Ф际恰芭潘鼻樾?,所以?shí)踐中的switch語句的每個(gè)case后面總要有break語句例把百分制的考試分?jǐn)?shù)轉(zhuǎn)換成A,B,C,D,E,F和I的等級(jí)成績(jī)。82SwitchGradeDemo.java注意在switch(<表達(dá)式>)中,<表達(dá)式>是整型字符型枚舉String83問題一是從第9行到第14行共享第15和第16行的語句,但讀起來令人覺得莫名其妙;二是太多的break語句,讀起來讓人覺得啰嗦可以使用“標(biāo)簽規(guī)則”來解決這兩個(gè)問題。84SwitchGradeArrowLabelDemo.javaswitch標(biāo)簽規(guī)則一個(gè)->連接的左部和右部稱為一條switch標(biāo)簽規(guī)則。箭頭左部列舉各種情形;箭頭右部則是一條語句或語句塊:85switch(<表達(dá)式>){case<左部1>-><右部1>case<左部2>-><右部2>

……case<左部n>-><右部n>default<左部n+1>-><右部n+1>}例使用標(biāo)簽規(guī)則根據(jù)用戶輸入的菜單項(xiàng)索引號(hào)選擇不同的功能去執(zhí)行86Menu.javaMenu2.java循環(huán)控制結(jié)構(gòu)while語句do-while語句for語句87while語句對(duì)<循環(huán)條件>計(jì)值;如果<循環(huán)條件>為false,跳過<語句序列>塊,執(zhí)行后隨語句;如果<循環(huán)條件>為true,執(zhí)行<語句序列>塊;轉(zhuǎn)到步驟(1)。88while(<循環(huán)條件>){<語句序列>}舉例89把公差d為1、首項(xiàng)a為1、項(xiàng)數(shù)n為10的等差數(shù)列累加WhileLoopDemo.java循環(huán)控制結(jié)構(gòu)的組成90死循環(huán)91inta=1;intn=10;intd=1;intsum=0;inti=1;while(i<=n){sum=sum+(a+(i-1)*d);}do-while語句92do{<語句序列>}while(<循環(huán)條件>);使用do-while循環(huán)對(duì)首項(xiàng)為1公差為1的n項(xiàng)等差數(shù)列累加DoWhileLoopDemo.javafor語句93for(<初始化>;<循環(huán)條件>;<步驟更新>){<語句序列>}while循環(huán)和do-while循環(huán)適合于無法預(yù)知循環(huán)次數(shù)的情況如果預(yù)先知道循環(huán)次數(shù),則使用for循環(huán)使得代碼更為簡(jiǎn)潔些。舉例94執(zhí)行初始化語句i=1,把1賦值給整型變量i;對(duì)循環(huán)條件i<n計(jì)值。如果為真,執(zhí)行循環(huán)體;否則結(jié)束for語句執(zhí)行后隨語句;執(zhí)行循環(huán)體中的語句:sum=sum+(a+(i-1)*d);執(zhí)行<更新循環(huán)條件>:i++;轉(zhuǎn)步驟2。使用do-while循環(huán)對(duì)首項(xiàng)為1公差為1的n項(xiàng)等差數(shù)列累加ForLoopDemo.java分支語句breakcontinuereturn95breakbreak語句使得程序的執(zhí)行流程立即從該語句位置跳轉(zhuǎn)到switch語句的后隨語句,即終止了switch語句的執(zhí)行轉(zhuǎn)去執(zhí)行其后隨語句96inti=9;while(i>=1){i--;if(i==3){break;}System.out.printf("%d",i);}輸出結(jié)果是87654,而不是87654321。continue僅跳過本次迭代中尚未執(zhí)行的語句,進(jìn)行下次迭代97inti=9;while(i>=1){i--;if(i==3){continue;}System.out.printf("%d",i);}輸出結(jié)果是87654210而不是

876543210returnreturn語句用以從當(dāng)前正在執(zhí)行的方法中返回到調(diào)用該方法的位置。除了能夠?qū)⒖刂屏鞣颠€給方法的調(diào)用者,return語句還能交給方法的調(diào)用者一個(gè)值,稱為返回值。僅需要把要返回值放在保留字return的后面即可。例如:語句return++i;返回對(duì)變量i增1后的結(jié)果。語句return"Donald";返回字符串“Donald”的引用。返回值的數(shù)據(jù)類型必須和方法聲明的返回值類型兼容。如果方法聲明的返回值類型是void,那么就不能返還任何值。98數(shù)組在Java中使用數(shù)組一般有四個(gè)步驟:聲明數(shù)組類型的引用變量;創(chuàng)建數(shù)組對(duì)象,并通過前面聲明的變量進(jìn)行引用;初始化數(shù)組對(duì)象;訪問數(shù)組對(duì)象。99聲明聲明數(shù)組引用的語法一般是:<元素?cái)?shù)據(jù)類型>[]<標(biāo)識(shí)符>例如:int[]a;100創(chuàng)建int[]a; //聲明a=newint[6]; //創(chuàng)建對(duì)象

“newint[6]”的意思創(chuàng)建容量為6的數(shù)據(jù)元素類型為int的數(shù)組對(duì)象。101聲明并創(chuàng)建對(duì)象int[]a=newint[6]; //聲明并創(chuàng)建對(duì)象102聲明時(shí)初始化int[]a={92,83,74};103創(chuàng)建數(shù)組時(shí)初始化也可以在創(chuàng)建數(shù)組對(duì)象時(shí)通過列舉字面量作為數(shù)組對(duì)象的初值:inta;a=newint[]{1,3,5,6};104注意如果沒有對(duì)數(shù)組進(jìn)行顯式初始化,那么Java會(huì)把每個(gè)數(shù)組元素設(shè)置為其數(shù)據(jù)類型的默認(rèn)值。整數(shù)類型的默認(rèn)值是0浮點(diǎn)數(shù)類型的默認(rèn)值是0.0boolean類型的默認(rèn)值是falsechar類型的默認(rèn)值是'\u0000'。由于數(shù)組的容量是個(gè)int類型的整數(shù),所以,其最大值就被限制為int類型的最大值:2147483647。105屬性length數(shù)組對(duì)象的屬性length記錄著數(shù)組的容量,通過成員訪問運(yùn)算符“.”能夠獲取這個(gè)數(shù):

intarraySize=a.length; //length是數(shù)組對(duì)象的成員變量106訪問數(shù)組元素通過數(shù)組中每個(gè)元素的索引(index),或者稱為下標(biāo)(subscript)來訪問數(shù)組元素。元素的索引是個(gè)整數(shù),從0開始編號(hào),范圍是0到length-1。107訪問數(shù)組元素使用無效的索引訪問數(shù)組會(huì)產(chǎn)生索引越界異常108int[]a={1,3,5,6};//具有4個(gè)元素的數(shù)組a[0]=10;//把10賦值給索引為0的元素System.out.print(a[3]);//輸出索引為3的數(shù)組元素ArrayExceptionDemo.java訪問數(shù)組元素10

溫馨提示

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