Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java基礎(chǔ)_第1頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java基礎(chǔ)_第2頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java基礎(chǔ)_第3頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java基礎(chǔ)_第4頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩70頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java面向?qū)ο蟪绦蛟O(shè)計(jì)Java語(yǔ)言基礎(chǔ)任務(wù)目的.掌握java語(yǔ)言的基本數(shù)據(jù)類型使用.掌握java語(yǔ)言的運(yùn)算符、表達(dá)式.掌握java語(yǔ)言程序控制語(yǔ)句.掌握J(rèn)ava程序數(shù)組的定義和使用標(biāo)識(shí)符Java程序中對(duì)各種變量、方法和類等要素命名時(shí)使用的字符序列稱為標(biāo)識(shí)符。標(biāo)識(shí)符命名規(guī)則:1、標(biāo)識(shí)符有字母、下劃線“_”、美元符號(hào)“$”或數(shù)字組成。2、標(biāo)識(shí)符應(yīng)以字母、下劃線、美元符號(hào)開頭。3、Java標(biāo)識(shí)符大小寫敏感,長(zhǎng)度無(wú)限制。4、Java標(biāo)識(shí)符取名盡量做到“見名知意”(1)以下標(biāo)識(shí)符取名合法:HelloWorldDataClass_987$bs5_C7(2)以下標(biāo)識(shí)符取名不合法:HelloWorldClass987bs5.C7關(guān)鍵字關(guān)鍵字也稱為保留字,Java程序中一些賦以特定的含義,用作專門用途的字符串稱為關(guān)鍵字(Keyword)。Java常用的關(guān)鍵字如表2.1所示:abstractbooleanbreakbytebyvalue*casecastcatchcharclassconst*continuedefaultdodoubleelseextendsfalsefinalfinallyfloatforfuturegenericgoto*ifimplementsimportinnerinstanceofintinterfacelongnativenewnulloperatorouterpackageprivateprotectedpublicrestreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttruetryvarvolatilewhile

常量與變量常量常量是指在程序運(yùn)行過(guò)程中其值不能發(fā)生改變的量。常量分為:1、整型常量:數(shù)值型數(shù)據(jù)為整型,如123。2、實(shí)型常量:數(shù)值型數(shù)據(jù)為浮點(diǎn)型,如12.3。3、字符常量:以單個(gè)引號(hào)括起來(lái)的單個(gè)字符,如’a’,’2’。4、字符串常量:以雙引號(hào)括起來(lái)的字符串,如”abc”,”a”,”12”。5、邏輯常量:邏輯常量分為邏輯真和邏輯假,值為true和false。注:常量還可以表示值不可以變的變量,具體可以參考final定義的變量。變量變量是指在程序運(yùn)行過(guò)程中其值可以發(fā)生改變的量,是Java程序中基本儲(chǔ)存單元。變量包括變量名和變量值兩個(gè)部分,變量名就是用戶自己來(lái)定義變量的名稱,給變量命名符合標(biāo)識(shí)符的規(guī)范;變量值則是存儲(chǔ)在變量名的數(shù)據(jù),修改變量的值僅僅是改變存儲(chǔ)單位中的數(shù)據(jù),而不是改變儲(chǔ)存數(shù)據(jù)的位置,即變量名不能改變。變量必須先聲明后才能使用,聲明變量必須要指明該變量屬于哪種數(shù)據(jù)類型。因此Java中的每個(gè)變量都要指明該變量屬于某種數(shù)據(jù)類型,因此一個(gè)變量一般要具備三個(gè)要素:1、變量的名稱,給變量命名要符合標(biāo)識(shí)符的規(guī)范。2、變量所屬數(shù)據(jù)類型,變量在定義的時(shí)候要指明所屬數(shù)據(jù)類型,才能使用。3、變量的初始值,變量在定義的時(shí)候,可以賦一個(gè)初始值,隨著程序的執(zhí)行該值可以改變。變量聲明的格式數(shù)據(jù)類型變量名稱1[=值1][,變量名稱2[=值2][,…]];【例2-1】:源程序名“Demo2_01.java”,該程序計(jì)算圓的半徑為20的圓的面積,并輸出。通過(guò)該程序讓學(xué)生了解常量和變量的使用。publicclassDemo2_01{publicstaticvoidmain(String[]args){finaldoublePI=3.1415926;intR=20;doubleS;S=PI*R*R; System.out.println("該圓的面積是:"+S);}}該程序的運(yùn)行結(jié)果:基本數(shù)據(jù)類型

Java程序在定義變量的過(guò)程中,必須要指明該變量的所屬數(shù)據(jù)類型,數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型?;緮?shù)據(jù)類型有8種,包括:字節(jié)型(byte)、短整型(short)、整型(int)、長(zhǎng)整型(long)、單精度浮點(diǎn)型(float)、雙精度浮點(diǎn)型(double)、字符型(char)、布爾型(boolean);引用數(shù)據(jù)類型有3種,包括:類類型(class)、接口類型(interface)、數(shù)組類型。本章只介紹簡(jiǎn)單數(shù)據(jù)類型和數(shù)組類型,其他兩種數(shù)據(jù)類型到第三章講解。整型整型數(shù)據(jù)類型分為4種,字節(jié)型(byte)、短整型(short)、整型(int)、長(zhǎng)整型(long)。Java語(yǔ)言整型常量的三種表達(dá)方式:1、十進(jìn)制整數(shù):用多個(gè)0-9之間的數(shù)字表示,除非是0不然首位不能用0來(lái)表示,如,123,-315,0。2、八進(jìn)制整數(shù):Java程序中采用八進(jìn)制數(shù)表示整數(shù)必須在該整數(shù)前面加上一個(gè)0進(jìn)行表示,如023,0366。3、十六進(jìn)制整數(shù):Java程序中采用十六進(jìn)制表示整數(shù)必須在該整數(shù)前面加上0x進(jìn)行表示,如0x255,0xa1等Java各整數(shù)類型有固定的表數(shù)范圍和字段長(zhǎng)度,且不受具體的操作系統(tǒng)的影響,以保證Java程序的可移植性。整型變量4種類型占存儲(chǔ)空間的大小以及取值范圍如表2.2所示:表2.2Java中的數(shù)據(jù)類型數(shù)據(jù)類型關(guān)鍵字存儲(chǔ)空間/字節(jié)取值范圍基本類型整型字節(jié)型byte1-27~27-1短整型short2-215~215-1整型int4-231~231-1長(zhǎng)整型long8-263~263-1

Java程序中整型常量默認(rèn)的為int型,聲明長(zhǎng)整型(long)在整型常量后面要加上”l”或”L”。ints=800;//正確longss=999999999999L;//如果不加l或L,則錯(cuò)誤。因?yàn)椋?99999999999默認(rèn)的int型的值,但該值超出了int型的取值范圍,所以會(huì)出錯(cuò)。將999999999999值轉(zhuǎn)換為長(zhǎng)整型就可以了,這個(gè)值沒(méi)有超出長(zhǎng)整型的取值范圍。浮點(diǎn)型浮點(diǎn)型數(shù)據(jù)就是實(shí)型數(shù)據(jù),分為單精度浮點(diǎn)型(float)和雙精度浮點(diǎn)型(double)。Java語(yǔ)言中浮點(diǎn)型常量有兩種表示方法:1、十進(jìn)制數(shù)形式:如3.14,2.68。2、科學(xué)記數(shù)法形式:由十進(jìn)制整數(shù)、小數(shù)點(diǎn)、小數(shù)和指數(shù)部分構(gòu)成,指數(shù)部分由字符E或e帶正負(fù)號(hào)的整數(shù)表示。如:314.3,采用科學(xué)記數(shù)法表示:3.143E+2或者3.143e2或者3.143E2;0.03143,采用科學(xué)記數(shù)法表示:3.143e-2或者3.143E-2。Java各整數(shù)類型有固定的表數(shù)范圍和字段長(zhǎng)度,且不受具體的操作系統(tǒng)的影響,以保證Java程序的可移植性。浮點(diǎn)型變量占存儲(chǔ)空間的大小以及取值范圍如表2.3所示:表2.3Java中的數(shù)據(jù)類型數(shù)據(jù)類型關(guān)鍵字存儲(chǔ)空間/字節(jié)取值范圍基本類型浮點(diǎn)型單精度f(wàn)loat4-3.4E38~3.4E38雙精度double8-1.7E308~1.7E308Java浮點(diǎn)型常量默認(rèn)的是雙精度(double)浮點(diǎn)型常量,如果要聲明一個(gè)常量為float,則需在數(shù)字后面加f或F,如:dobuled=123.4;//正確floatdd=123.4f;//如果123.4后面不加f或F,則錯(cuò)誤【例2-2】:通過(guò)案例來(lái)掌握整型數(shù)據(jù)類型和浮點(diǎn)型數(shù)據(jù)類型的使用publicclassDemo2_02{ publicstaticvoidmain(String[]args){ shortsh=050; inti=0xA3; longlg=(long)2.0E+10; byteby=(byte)129; floatft=(float)1.234; doubledb=34.56d; System.out.println("短整型變量的值:sh="+sh); System.out.println("整型變量的值:i="+i); System.out.println("長(zhǎng)整型變量的值:lg="+lg); System.out.println("字節(jié)型變量的值:by="+by); System.out.println("單精度度浮點(diǎn)型的值:ft="+ft); System.out.println("雙精度浮點(diǎn)型的值:db="+db); }}該程序的運(yùn)行結(jié)果:字符型字符型(char)數(shù)據(jù)用來(lái)表示單個(gè)的字符。如:ChareChar=’a’;charcChar=’中’;Java字符采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),取值范圍:0-65535之間,也可以十六進(jìn)制編碼形式表示:Charc1=’\u0061’;//\u表示后面的數(shù)字是采用Unicode編碼來(lái)表示Java語(yǔ)言中還允許使用轉(zhuǎn)義字符’\’來(lái)將其后的字符轉(zhuǎn)變?yōu)槠渌暮x,例如:Charc2=’\n’;//’\n’表示換行符,Java語(yǔ)言中常用的轉(zhuǎn)義字符如表2.4所示:表2.4Java中的轉(zhuǎn)義字符轉(zhuǎn)義字符引用方法含義\ddd‘\ddd’1~3位八進(jìn)制數(shù)據(jù)表示的字符\dxxxx‘\dxxxx’4位十六進(jìn)制數(shù)據(jù)表示的字符\’‘\’’單引號(hào)\\‘\\’反斜線\b‘\b’退格\t‘\t’tab\n‘\n’換行\(zhòng)f‘\f’換頁(yè)\r‘\r’回車布爾型布爾型(boolean)是一種表示邏輯值的簡(jiǎn)單數(shù)據(jù)類型,它的取值只能是常量true或false中的一個(gè)。通常用于程序中的一些邏輯判斷處理。【例2-3】:通過(guò)案例來(lái)掌握簡(jiǎn)單數(shù)據(jù)類型的使用publicclassDemo2_03{ publicstaticvoidmain(Stringargs[]){ charch1='b'; charch2='\''; booleann1=true; booleann2=(3+2)<4; System.out.println("字符型變量的值:ch1="+ch1+",ch2="+ch2); System.out.println("布爾型變量的值:n1="+n1+",n2="+n2); }}該程序的運(yùn)行結(jié)果:基本數(shù)據(jù)類型轉(zhuǎn)換Java是強(qiáng)類型語(yǔ)言,對(duì)數(shù)據(jù)類型的相容性進(jìn)行檢查以保證類型是兼容的。任何類型不匹配都報(bào)錯(cuò)。因此,我們?cè)诰帉慾ava程序的時(shí)候要進(jìn)行相關(guān)數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換有兩種形式:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。1、自動(dòng)類型轉(zhuǎn)換:在數(shù)據(jù)類型兼容的情況下,取值范圍小的數(shù)據(jù)類型向取值范圍大的數(shù)據(jù)類型轉(zhuǎn)換,稱為自動(dòng)轉(zhuǎn)換。(byte,char,short)intlongfloatdouble轉(zhuǎn)換byte,short,char之間不會(huì)互相轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先會(huì)轉(zhuǎn)換為int類型。2、強(qiáng)制類型轉(zhuǎn)換:在數(shù)據(jù)類型兼容的情況下,取值范圍大的數(shù)據(jù)類型向取值范圍小的數(shù)據(jù)類型轉(zhuǎn)換,需要強(qiáng)制轉(zhuǎn)換,這類轉(zhuǎn)換會(huì)導(dǎo)致數(shù)據(jù)的精度損失和溢出。有多種類型的數(shù)據(jù)混合運(yùn)算時(shí),系統(tǒng)首先自動(dòng)將所有數(shù)據(jù)轉(zhuǎn)換成容量最大的那一種數(shù)據(jù)類型,然后再進(jìn)行計(jì)算?!纠?-4】:閱讀如下程序,掌握數(shù)據(jù)類型之間的轉(zhuǎn)換publicclassDemo2_04{ publicstaticvoidmain(Stringarg[]){inti1=123;inti2=456;doubled1=(i1+i2)*1.2;//系統(tǒng)將轉(zhuǎn)換為double型運(yùn)算floatf1=(float)((i1+i2)*1.2);//需要加強(qiáng)制轉(zhuǎn)換符byteb1=67;byteb2=89;byteb3=(byte)(b1+b2);//系統(tǒng)將轉(zhuǎn)換為int型運(yùn)算,需要強(qiáng)制轉(zhuǎn)換符System.out.println(b3);doubled2=1e200;floatf2=(float)d2;//會(huì)產(chǎn)生溢出System.out.println(f2);floatf3=1.23f;//必須加flongl1=123;longl2=30000000000L;//必須加lfloatf=l1+l2+f3;//系統(tǒng)將轉(zhuǎn)換為float型計(jì)算longl=(long)f;//強(qiáng)制轉(zhuǎn)換會(huì)舍去小數(shù)部分(不是四舍五入)}}該程序的運(yùn)行結(jié)果:運(yùn)算符與表達(dá)式運(yùn)算符是一種特殊的符號(hào),常和運(yùn)算數(shù)一起組成運(yùn)算式。由運(yùn)算符和操作數(shù)組成的式子,稱作表達(dá)式。常見的運(yùn)算符如表2.5所示:注:根據(jù)運(yùn)算符的操作數(shù)的個(gè)數(shù)可以將運(yùn)算符分為一元運(yùn)算符、二元運(yùn)算符和三元運(yùn)算符表2.5Java中的運(yùn)算符運(yùn)算符種類運(yùn)算符說(shuō)明賦值運(yùn)算符=二元運(yùn)算符算術(shù)運(yùn)算符+、—、*、/、%、++、--“++”、”--“為一元運(yùn)算符外,二元運(yùn)算符比較運(yùn)算符>、<、>=、<=、==、!=二元運(yùn)算符邏輯運(yùn)算符||、&&、!除“!”為一元運(yùn)算符外,其他都是二元運(yùn)算符位運(yùn)算符&、|、~、^、<<、>>、>>>除“~”為一元運(yùn)算符外,其他都是二元運(yùn)算符三元運(yùn)算符?:三元運(yùn)算符算術(shù)運(yùn)算符算術(shù)云算符完成數(shù)學(xué)上的加(+)、減(-)、乘(*)、除(/)、取余(%)等運(yùn)算。++、--運(yùn)算符完成一元操作數(shù)的自增和自減,Java中算術(shù)運(yùn)算符如表2.6所示:表2.6算術(shù)運(yùn)算符運(yùn)算符用例功能+a+b求a與b之和-a-b求a與b之差*a*b求a與b之積/a/b求a與b之商%a%b求a與b相除的余數(shù)++a++先引用a的值,a的值加1++aa的值先加1,再引用a的值--a--先引用a的值,a的值減1--aa的值先減1,再引用a的值【例2-5】:通過(guò)案例來(lái)掌握算術(shù)運(yùn)算符的使用publicclassDemo2_05{publicstaticvoidmain(String[]args){inti1=10,i2=20;inti=(i2++);System.out.print("i="+i+",");System.out.println("i2="+i2);i=(++i2);System.out.print("i="+i+",");System.out.println("i2="+i2);i=(--i1);System.out.print("i="+i+",");System.out.println("i2="+i2);i=(i1--);System.out.print("i="+i+",");System.out.println("i2="+i2);inti3=i2%i1;System.out.println("i3="+i3);}}程序運(yùn)行的結(jié)果:賦值運(yùn)算符和擴(kuò)展賦值運(yùn)算符賦值運(yùn)算符“=”,是一個(gè)雙目運(yùn)算符,擴(kuò)展賦值運(yùn)算符就是把賦值運(yùn)算符與算術(shù)運(yùn)算符、邏輯運(yùn)算符或位運(yùn)算符中的雙目運(yùn)算符結(jié)合起來(lái)而形成的賦值運(yùn)算符。如表2.7所示:表2.7賦值運(yùn)算符和擴(kuò)展賦值運(yùn)算符運(yùn)算符用例功能=a=b把b的值賦給a+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b&=a&=ba=a&b^=a^=ba=a^b|=a|=ba=a|b<<=a<<=ba=a<<b>>=a>>=ba=a>>b>>>=a>>>=ba=a>>>b【例2-6】:通過(guò)案例來(lái)掌握擴(kuò)展賦值運(yùn)算符的使用publicclassDemo2_06{ publicstaticvoidmain(String[]args){ intm=4; intn=8; n+=m; System.out.println("m="+m+",n="+n); Strings1="s1"; Strings2="s2"; s1+=s2; System.out.println("s1="+s1+",s2="+s2); }}程序運(yùn)行的結(jié)果:關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于比較兩個(gè)值之間的大小,結(jié)果返回boolean型的值。具體關(guān)系運(yùn)算符如表2.8所示:表2.8關(guān)系運(yùn)算符運(yùn)算符用例功能==a==b如果a恒等于b,結(jié)果為true,否則,結(jié)果為false!=a!=b如果a不等于b,結(jié)果為true,否則,結(jié)果為false>a>b如果a大于b,結(jié)果為true,否則,結(jié)果為false>=a>=b如果a大于或等于b,結(jié)果為true,否則,結(jié)果為false<a<b如果a小于b,結(jié)果為true,否則,結(jié)果為false<=a<=b如果a小于或等于b,結(jié)果為true,否則,結(jié)果為false邏輯運(yùn)算符邏輯運(yùn)算符只能處理布爾值,處理結(jié)果仍然是布爾型值。Java邏輯運(yùn)算符有:邏輯與(&)、邏輯或(|)、邏輯異或(^)、短路與(&&)和短路(||),其真值表如表2.9所示:表2.9邏輯運(yùn)算符真值表ABA&BA|BA^B!Atruetruetruetruefalsefalsetruefalsefalsetruetruefalsefalsetruefalsetruetruetruefalsefalsefalsefalsefalsetrue短路與(&&)和邏輯與(&)運(yùn)算規(guī)則相同,短路或(||)和邏輯或(|)的運(yùn)算規(guī)則相同,只不過(guò),短路與(&&)和短路或(||)具有短路功能,舉例如下:【例2-7】:通過(guò)案例來(lái)掌握短路與(&&)和短路或(||)運(yùn)算符的使用publicclassDemo2_07{publicstaticvoidmain(String[]args){inti=1,j=2;booleanflag1=(i>4)&&((++i+j)>5);//第二個(gè)操作數(shù)將不再計(jì)算booleanflag2=(i<2)||((i+j)<6);//第二個(gè)操作數(shù)將不再計(jì)算System.out.println("flag1="+flag1);System.out.println("flag2="+flag2);}}程序的運(yùn)行結(jié)果:三元運(yùn)算符三元運(yùn)算符(?:),該運(yùn)算符的語(yǔ)法格式:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>表達(dá)式1的值是一個(gè)邏輯值,程序先計(jì)算表達(dá)式1的值,如果為true,就將表達(dá)式2的值作為整個(gè)表達(dá)式的值,如果為false,就將表達(dá)式3的值作為整個(gè)表達(dá)式的值。【例2-8】:通過(guò)案例來(lái)掌握三元運(yùn)算符的使用publicclassTernaryOperator{publicstaticvoidmain(String[]args){intscore=80;intx=-100;Stringtype=score<60?"不及格":"及格";intflag=x>0?1:(x==0?0:-1);System.out.println("type="+type);System.out.println("flag="+flag);}}程序的運(yùn)行結(jié)果:位運(yùn)算符Java中可以使用位運(yùn)算直接對(duì)整數(shù)類型和字符類型的數(shù)據(jù)的按位操作,Java的位運(yùn)算符有:位非(~)、位與(&)、位或(|)、位異或(^)、位右移(>>)、位左移(<<)和無(wú)符號(hào)右移(>>>)。具體位運(yùn)算符如表2.10所示:表2.10位運(yùn)算符運(yùn)算符用例功能~~aa按位取反&a&ba與b按位與|a|ba與b按位或^a^ba與b按位異或>>a>>ba右移b位,若a的最高位為1,左邊補(bǔ)1,否則補(bǔ)0<<a<<bA左移b位,右邊補(bǔ)0>>>a>>>ba右移b位,左邊補(bǔ)0【例2-9】:通過(guò)案例來(lái)掌握位運(yùn)算符的使用(這個(gè)例子的數(shù)字要變)bytea=7,b=-7,c=15,d=42則:~c=-16//等價(jià)于二進(jìn)制~00010000=11101111c&d=10//等價(jià)于二進(jìn)制00010000&00101010=00001010c^d=37//等價(jià)于二進(jìn)制00010000^00101010=00100101c|d=47//等價(jià)于二進(jìn)制00010000|00101010=00101111a<<2=28//等價(jià)于二進(jìn)制00000111<<2=00011100b>>2=-2//等價(jià)于二進(jìn)制11111001>>2=11111110b>>>2=62//等價(jià)于二進(jìn)制11111001>>>2=00111110程序如下:publicclassDemo2_09{publicstaticvoidmain(String[]args){bytea=7,b=-7,c=15,d=42;System.out.println(~c);System.out.println(c&d);System.out.println(c^d);System.out.println(c|d);System.out.println(a<<2);System.out.println(b>>2);System.out.println(b>>>2);}}2.3.4.7運(yùn)算符的結(jié)合性和優(yōu)先級(jí)Java語(yǔ)言中一條表達(dá)式,往往包含多個(gè)運(yùn)算符,那個(gè)運(yùn)算符先運(yùn)算那個(gè)運(yùn)算符后運(yùn)算,也有一定的規(guī)則,即運(yùn)算符運(yùn)算的優(yōu)先級(jí)。運(yùn)算符優(yōu)先級(jí)從高到底排列,如表2.11所示:圓括號(hào)可以改變表達(dá)式中運(yùn)算符的優(yōu)先級(jí)別。表2.11運(yùn)算符優(yōu)先級(jí)優(yōu)先級(jí)運(yùn)算符含義結(jié)合性1.[]()對(duì)象成員數(shù)組下標(biāo)圓括號(hào)從左到右2++--+-~!自增自減負(fù)號(hào)正號(hào)位非邏輯非從右到左3*/%乘除取余從左到右4+-加減從左到右5<<>>>>>左移右移無(wú)符號(hào)右移從左到右6<<=>>=小于小于等于大于大于等于從左到右7==!=恒等不等從左到右8&邏輯與(位與)從左到右9^邏輯異或(位異或)從左到右10|邏輯或(位或)從左到右11&&短路與從左到右12||短路或從左到右13?:三元運(yùn)算符從右到左14=擴(kuò)展賦值運(yùn)算符賦值擴(kuò)展運(yùn)算符從右到左【例2-10】:通過(guò)案例來(lái)掌握運(yùn)算符優(yōu)先級(jí)的使用(補(bǔ)充程序內(nèi)容)publicclassDemo2_10{publicstaticvoidmain(String[]args){ inti=15; booleanflag=i<30&&i%10!=0; System.out.println(flag);}}程序的運(yùn)行結(jié)果:Java流程控制2.3.6Java流程控制對(duì)程序的語(yǔ)句執(zhí)行流程進(jìn)行控制叫程序流程控制,java中常用的流程控制語(yǔ)句包括順序語(yǔ)句、選擇語(yǔ)句、循環(huán)語(yǔ)句。順序結(jié)構(gòu)就是從上往下,依次執(zhí)行。順序結(jié)構(gòu)是最簡(jiǎn)單的,最基本的一種程序結(jié)構(gòu)。選擇語(yǔ)句選擇語(yǔ)句也就條件語(yǔ)句,當(dāng)滿足某種條件,就執(zhí)行某段代碼,不滿足某種條件,就執(zhí)行另一段代碼等。選擇語(yǔ)句分為if語(yǔ)句和switch語(yǔ)句。if語(yǔ)句if語(yǔ)句根據(jù)多種選擇情況,分為單分支if語(yǔ)句、雙分支if語(yǔ)句、多分支if語(yǔ)句。1、單分支if語(yǔ)句單分支if語(yǔ)句是最簡(jiǎn)單的if語(yǔ)句,基本語(yǔ)法格式:if(表達(dá)式){語(yǔ)句塊}if后面的表達(dá)式是一個(gè)邏輯型的值,表達(dá)式的值如果為true,程序就執(zhí)行if后面的花括號(hào)里面的語(yǔ)句塊。否則不執(zhí)行語(yǔ)句塊?!纠?-11】:通過(guò)案例來(lái)掌握簡(jiǎn)單if語(yǔ)句的使用publicclassDemo2_11{ publicstaticvoidmain(String[]args){ inti=21; booleann=false; if(i!=20){ n=true; } System.out.println(n); }}程序的運(yùn)行結(jié)果:2、雙分支if語(yǔ)句采用if和else語(yǔ)句配合來(lái)完成雙分支if語(yǔ)句,相當(dāng)于“如果……那么……”的意思。語(yǔ)法格式:if(表達(dá)式){ 語(yǔ)句塊1}else{ 語(yǔ)句塊2}if后面的表達(dá)式是一個(gè)邏輯型的值,表達(dá)式的值如果為true,程序就執(zhí)行if后面的花括號(hào)里面的語(yǔ)句塊。否則執(zhí)行else后面的花括號(hào)里面的語(yǔ)句。【例2-12】:通過(guò)案例來(lái)掌握簡(jiǎn)單if語(yǔ)句的使用publicclassDemo2_12{ publicstaticvoidmain(String[]args){ inti=20; booleann=false; if(i!=20){ n=true; }else{ System.out.println("i="+i); } System.out.println("n="+n); }}程序的運(yùn)行結(jié)果:3、多分支if語(yǔ)句采用if與elseif語(yǔ)句嵌套來(lái)完成多分支if語(yǔ)句,基本語(yǔ)法格式:if(表達(dá)式1){語(yǔ)句塊1}elseif(表達(dá)式2){語(yǔ)句塊2}…//省略了多條elseif語(yǔ)句塊elseif(表達(dá)式n){語(yǔ)句塊n}else{ 語(yǔ)句塊n+1}表達(dá)式1一直到表達(dá)式n都是邏輯值,if多分支程序執(zhí)行過(guò)程:從上到下判斷表達(dá)式的值,如果表達(dá)式值都為false,就執(zhí)行else后面的花括號(hào)語(yǔ)句塊,執(zhí)行結(jié)束后,退出if多分支語(yǔ)句;如果某個(gè)表達(dá)式的值為true,就執(zhí)行該表達(dá)式下的花括號(hào)語(yǔ)句塊,程序不對(duì)其后面的表達(dá)式值進(jìn)行判斷了,該if多分支語(yǔ)句結(jié)束?!纠?-13】:通過(guò)案例來(lái)掌握if多分支語(yǔ)句的使用publicclassDemo2_13{ publicstaticvoidmain(String[]args){ inti=20; if(i<20){ System.out.println("<20"); }elseif(i<40){ System.out.println("<40"); }elseif(i<60){ System.out.println("<60"); }else System.out.println(">=60"); System.out.println("100"); }}程序的運(yùn)行結(jié)果:

switch語(yǔ)句if多分支嵌套語(yǔ)句,分支較多時(shí),程序的可讀性降低,Java提供了switch語(yǔ)句,該語(yǔ)句根據(jù)表達(dá)式的值來(lái)選擇執(zhí)行多分支語(yǔ)句,語(yǔ)法格式:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句塊1;[break;]case常量表達(dá)式2:語(yǔ)句塊2;[break;]……case常量表達(dá)式n:語(yǔ)句塊n;[break;]default:語(yǔ)句塊n+1;}switch后的表達(dá)式的值只能是byte、short、int類型或者是字符、字符串類型,根據(jù)表達(dá)式的值,依次與case后的常量表達(dá)式值比較,當(dāng)兩者相等,則執(zhí)行其后的語(yǔ)句,直到遇到break或遇到switch語(yǔ)句結(jié)束則終止;case常量表達(dá)式的值都不滿足,則做default后面的語(yǔ)句塊?!纠?-14】:通過(guò)案例來(lái)掌握switch語(yǔ)句的使用publicclassDemo2_14{ publicstaticvoidmain(String[]args){ inti=8; switch(i){ case1: System.out.println("A"); case8: System.out.println("B"); case3: System.out.println("C"); case2: System.out.println("D"); break; case9: System.out.println("E"); break; default: System.out.println("error"); } }}程序運(yùn)行的結(jié)果:循環(huán)語(yǔ)句循環(huán)語(yǔ)句是指在一定的條件下,重復(fù)執(zhí)行某些操作。Java中的循環(huán)語(yǔ)句有while循環(huán)語(yǔ)句、do…while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句。while循環(huán)語(yǔ)句while循環(huán)又稱“當(dāng)型”循環(huán),語(yǔ)法格式:while(表達(dá)式){ 循環(huán)體語(yǔ)句;}其中,循環(huán)條件表達(dá)式是一個(gè)布爾類型,而循環(huán)體語(yǔ)句是當(dāng)循環(huán)條件表達(dá)式為真時(shí)要執(zhí)行的語(yǔ)句,反之,則不執(zhí)行該語(yǔ)句。while語(yǔ)句的執(zhí)行過(guò)程如圖2-1所示:圖2-1while語(yǔ)句的執(zhí)行過(guò)程do…while循環(huán)語(yǔ)句do…while循環(huán)語(yǔ)句又稱“直到型”循環(huán),語(yǔ)法格式:do{ 循環(huán)體語(yǔ)句;}while(表達(dá)式)do…while循環(huán)首先執(zhí)行循環(huán)體,再判斷循環(huán)條件,如果條件成立,則重復(fù)執(zhí)行循環(huán)體;條件不成立,結(jié)束循環(huán)。循環(huán)體至少被執(zhí)行一次。do...while循環(huán)的執(zhí)行過(guò)程如圖2-2所示:圖2-2do...while循環(huán)的執(zhí)行過(guò)程【例2-15】:通過(guò)案例來(lái)掌握while和do…while循環(huán)語(yǔ)句的使用publicclassDemo2_15{ publicstaticvoidmain(String[]args){ inti=3; while(i<3&&i>0){ i--; System.out.println("while循環(huán)"+i); } i=3; do{ i--; System.out.println("do...while循環(huán)"+i); }while(i<3&&i>0); }}程序運(yùn)行的結(jié)果:for循環(huán)語(yǔ)句for循環(huán)的語(yǔ)法格式:for(初始值表達(dá)式;條件表達(dá)式;修正表達(dá)式){循環(huán)體語(yǔ)句;}for循環(huán)語(yǔ)句的執(zhí)行過(guò)程:1)首先執(zhí)行初始表達(dá)式,接著執(zhí)行條件表達(dá)式,若條件表達(dá)式的值為true,則執(zhí)行循環(huán)體語(yǔ)句,轉(zhuǎn)2);為false,則退出for循環(huán)語(yǔ)句。2)執(zhí)行修正表達(dá)式,然后再執(zhí)行條件表達(dá)式,若條件表達(dá)式的值為true,則執(zhí)行循環(huán)體語(yǔ)句,轉(zhuǎn)2);為false,則退出for循環(huán)語(yǔ)句。for循環(huán)語(yǔ)句的執(zhí)行過(guò)程如圖2-3所示:圖2-3for循環(huán)語(yǔ)句的執(zhí)行過(guò)程【例2-16】:通過(guò)案例來(lái)掌握f(shuō)or循環(huán)語(yǔ)句的使用,編程實(shí)現(xiàn)1+3+5+…+99的和。publicclassDemo2_16{publicstaticvoidmain(String[]args){ intsum=0;for(inti=1;i<=99;i=i+2){sum=sum+i;}System.out.println("Thesumis="+sum);}}程序運(yùn)行的結(jié)果:跳轉(zhuǎn)語(yǔ)句Java中跳轉(zhuǎn)語(yǔ)句有三個(gè),break、continue和return語(yǔ)句,其中break和continue語(yǔ)句用于分支和循環(huán)語(yǔ)句中,控制程序執(zhí)行的流程。return語(yǔ)句一般用在方法中,用來(lái)返回方法的值,return語(yǔ)句的講解見第三章。break語(yǔ)句break表示終止,用switch語(yǔ)句中,表示終止比較;用在循環(huán)語(yǔ)句中,表示強(qiáng)制退出本次循環(huán),若break語(yǔ)句外有多層循環(huán),那么break只能強(qiáng)制退出其所在的那層循環(huán)?!纠?-17】:通過(guò)案例來(lái)掌握break語(yǔ)句的使用,編程實(shí)現(xiàn)1-50之間的所有素?cái)?shù)。publicclassDemo2_17{ publicstaticvoidmain(String[]args){System.out.println("1~50間的所有素?cái)?shù)是:"); for(inti=1;i<=50;i++){ for(intj=2;j<=i;j++){ if(i==2){ System.out.print(i+""); break; } if(i%j==0){ break; } if(j==i-1){ System.out.print(i+""); } } } }} 程序運(yùn)行的結(jié)果:continue語(yǔ)句continue語(yǔ)句是結(jié)束本次循環(huán),不再執(zhí)行continue后面的Java語(yǔ)句,繼續(xù)執(zhí)行下一次的循環(huán)語(yǔ)句。【例2-18】:通過(guò)案例來(lái)掌握break語(yǔ)句的使用,編程實(shí)現(xiàn)1~100之間能夠被5整除的所有數(shù)之和。publicclassDemo2_18{ publicstaticvoidmain(String[]args){ System.out.println("1~100之間能夠被5整除的數(shù)有:"); intsum=0; for(inti=1;i<=100;i++){ if(i%5!=0){ continue; } sum=sum+i; System.out.print(i+""); } System.out.print("\n");System.out.print("它們之和為:"+sum);}}程序運(yùn)行的結(jié)果:Java數(shù)組數(shù)組屬于Java的引用數(shù)據(jù)類型,它是由類型相同的數(shù)據(jù)組成的有序數(shù)據(jù)集合。分為一維數(shù)組和多維數(shù)組。一維數(shù)組1、一維數(shù)組的聲明一維數(shù)組聲明的格式有兩種方式:1)數(shù)據(jù)類型數(shù)組名[];2)數(shù)據(jù)類型[]數(shù)組名;數(shù)據(jù)類型可以是Java中任意的數(shù)據(jù)類型。兩種定義方式表示的意思是一致,以下數(shù)組聲明都采用第1)方式。如:intiValue[];或int[]iValue;//聲明一維整型數(shù)組iValuedoubleb[];//聲明一維double型數(shù)組b2、一維數(shù)組分配空間數(shù)組聲明后,該數(shù)組在內(nèi)存中還沒(méi)有存儲(chǔ)空間,只有給數(shù)組分配空間大小后,該數(shù)組在內(nèi)存中存在,數(shù)組名指向該內(nèi)存空間的首地址。給數(shù)組分配空間采用new關(guān)鍵字,語(yǔ)法格式:1)聲明的數(shù)組的時(shí)候,給數(shù)組開辟空間數(shù)據(jù)類型數(shù)組名[]=new數(shù)據(jù)類型[數(shù)組大小];例如:定義一個(gè)double類型的數(shù)組dValue,該數(shù)組含有10個(gè)元素。doubledValue[]=newdouble[10];2)數(shù)組聲明后,給數(shù)組開辟空間數(shù)據(jù)類型數(shù)組名[];數(shù)組名=new數(shù)據(jù)類型[數(shù)組大小];例如:定義一個(gè)double類型的數(shù)組dValue,該數(shù)組含有10個(gè)元素。doubledValue[];dValue=newdouble[10];數(shù)組開辟空間后,數(shù)組的大小就確定了,數(shù)組中的各個(gè)元素就確定,元素的小標(biāo)從0開始,數(shù)組元素的引用方式:數(shù)組名[下標(biāo)];比如上面例子給數(shù)組dValue定義了10個(gè)元素,這樣dValue數(shù)組中含有:dValue[0],dValue[1],dValue[2],……dValue[9]10個(gè)元素。3、一維數(shù)組的賦值完成數(shù)組的聲明和開辟空間后,就要給數(shù)組賦值。數(shù)組賦值分為靜態(tài)賦值和動(dòng)態(tài)賦值。1)靜態(tài)賦值在聲明數(shù)組的同時(shí)給數(shù)組賦值,這種賦值方式稱為靜態(tài)賦值。intiArray[]={1,2,3,4,5,6};StringstrArray[]={“zhangsan”,”lisi”,”wangwu”};2)動(dòng)態(tài)賦值聲明數(shù)組并給數(shù)組開辟空間后,再給數(shù)組賦值,這種賦值方式稱為動(dòng)態(tài)賦值。StringstrArray[];//聲明數(shù)組strArray[]=newString[3];//給數(shù)組開辟空間strArray[0]=”zhangsan”;//給每個(gè)數(shù)組元素賦值strArray[1]=”lisi”;strArray[2]=”wangwu”;3)默認(rèn)賦值給數(shù)組開辟空間后,即使沒(méi)有給數(shù)組賦值,數(shù)組根據(jù)所屬數(shù)據(jù)類型,獲得默認(rèn)的初始值。例如:給double型數(shù)組dValue分配三個(gè)元素doubledValue[]=newdouble[3];即使沒(méi)有給dValue賦值,dValue數(shù)組中元素也獲得一個(gè)初始值,dValue[0]=0.0,dValue[1]=0.0,dValue[2]=0.0。Java數(shù)組中各數(shù)據(jù)類型默認(rèn)的初始值如表2.12所示:表2.12Java中各數(shù)據(jù)類型默認(rèn)初始化值數(shù)據(jù)類型默認(rèn)值數(shù)據(jù)類型默認(rèn)值數(shù)據(jù)類型默認(rèn)值byte0long0char‘\u0000’short0float0.0fbooleanfalseint0double0.0d引用類型null4、一維數(shù)組的應(yīng)用【例2-19】:通過(guò)案例來(lái)掌握一維數(shù)組的使用,編程實(shí)現(xiàn):定義一個(gè)整型數(shù)組,數(shù)組里面有10個(gè)元素,通過(guò)靜態(tài)賦值給數(shù)組初始化,找出最大和最小的數(shù),并輸出。publicclassDemo2_19{publicstaticvoidmain(String[]args){intiArray[]={3,2,6,9,1,10,4,20,5,12};intmax=iArray[0];intmin=iArray[0];for(inti=1;i<10;i++){ if(iArray[i]>max){ max=iArray[i]; } if(iArray[i]<min){ min=iArray[i]; } }System.out.println("iArray數(shù)組中最大值="+max+","+"iArray數(shù)組中最小值="+min);}}程序運(yùn)行的結(jié)果:二維數(shù)組1、二維數(shù)組的聲明二維數(shù)組可以看成是一維數(shù)組的數(shù)組,二維數(shù)組聲明的格式和一維數(shù)組相似,也有兩種方式:1)數(shù)據(jù)類型數(shù)組名[][];2)數(shù)據(jù)類型[][]數(shù)組名;數(shù)據(jù)類型可以是Java中任意的數(shù)據(jù)類型。如:intiValue[][];或int[][]iValue;//聲明二維整型數(shù)組iValuedoubledValue[][];//聲明二維double型數(shù)組dValue2、二維數(shù)組分配空間二維數(shù)組通過(guò)new來(lái)分配空間,數(shù)組名后的第一個(gè)方括號(hào)[]中的整數(shù)值表示行數(shù),第二個(gè)方括號(hào)[]中的整數(shù)值是列數(shù),與一維數(shù)組一樣,二維數(shù)組的下標(biāo)都是從0開始,數(shù)組名指向該內(nèi)存空間的首地址。語(yǔ)法格式:1)聲明的數(shù)組的時(shí)候,給數(shù)組開辟空間數(shù)據(jù)類型數(shù)組名[][]=new數(shù)據(jù)類型[行數(shù)組大小][列數(shù)組大小];例如:定義一個(gè)double類型的數(shù)組dValue,該數(shù)組含有5個(gè)行元素和10個(gè)列元素,總共有50個(gè)元素。doubledValue[][]=newdouble[5][10];2)數(shù)組聲明后,給數(shù)組開辟空間 數(shù)據(jù)類型數(shù)組名[][]; 數(shù)組名=new數(shù)據(jù)類型[行數(shù)組大小][列數(shù)組大小];例如:定義一個(gè)double類型的數(shù)組dValue,該數(shù)組含有50個(gè)元素。doubledValue[][];dValue=newdouble[5][10];3)開辟不規(guī)則空間二維數(shù)組可以開辟不規(guī)則空間,開辟空間的時(shí)候,必須先指定行數(shù),對(duì)每行對(duì)應(yīng)的列數(shù)可以不相等。例如:定義一個(gè)int類型的數(shù)組iValue,該數(shù)組行組數(shù)大小為3,第1行開辟列數(shù)組大小為5,第2行開辟列數(shù)組大小為3,第3行開辟列數(shù)組大小為7。intiValue[][]=newint[3][];//聲明二維數(shù)組,給二維數(shù)組指定行數(shù)組大小。iValue[0]=newint[5];//為二維數(shù)組的第1行分配5個(gè)列數(shù)組元素。iValue[1]=newint[3];//為二維數(shù)組的第1行分配3個(gè)列數(shù)組元素。iValue[2]=newint[7];//為二維數(shù)組的第1行分配7個(gè)列數(shù)組元素。3、二維數(shù)組的賦值1)靜態(tài)賦值二維數(shù)組靜態(tài)賦值和一維數(shù)組靜態(tài)賦值一樣,在聲明數(shù)組的同時(shí)給數(shù)組賦值。intiArray[][]={{1,2,3},{4,5,6,7},{8,9}};StringstrArray[][]={{“zhangsan”,“l(fā)isi”,“wangwu”},{“how”,“are”,“you”}};2)動(dòng)態(tài)賦值聲明數(shù)組并給數(shù)組開辟空間后,再給數(shù)組賦值,這種賦值方式稱為動(dòng)態(tài)賦值。doublebArray[][]=newdouble[2][3];//聲明數(shù)組并給數(shù)組開辟空間//給每個(gè)數(shù)組元素賦值bArray[0][0]=1.0;bArray[0][1]=2.0;bArray[0][1]=8.0;bArray[1][0]=3.0;bArray[1][1]=4.0;bArray[0][1]=7.0;bArray[2][0]=5.0;bArray[2][1]=6.0;bArray[0][1]=9.0;3)默認(rèn)賦值二維數(shù)組可以其實(shí)是一維數(shù)組的數(shù)組,給二維數(shù)組開辟空間后,也獲得默認(rèn)的初始值,與一維數(shù)組默認(rèn)的初始值一樣。【例2-20】:通過(guò)案例來(lái)掌握二維數(shù)組的使用,編程實(shí)現(xiàn):定義一個(gè)4行5列double型二維數(shù)組,從鍵盤輸入值,編程找出最大值輸出,并輸出相應(yīng)的行號(hào)和列號(hào)。importjava.util.Scanner;importjava.io.*;publicclassDemo2_20{publicstaticvoidmain(String[]args){ doubledArray[][]=newdouble[4][5]; Scannersc=newScanner(System.in); //給數(shù)組賦值 for(inti=0;i<4;i++){ for(intj=0;j<5;j++){ dArray[i][j]=sc.nextDouble(); } } //從數(shù)組中找出最大值 doublemax=dArray[0][0]; intiIndex=0,jIndex=0; for(inti=0;i<4;i++){ for(intj=0;j<5;j++){ if(dArray[i][j]>max){ max=dArray[i][j]; iIndex=i; jIndex=j; }}} System.out.println("該數(shù)組最大值是:"+max); System.out.println("該數(shù)組最大值對(duì)應(yīng)的行號(hào):"+iIndex+","+"列號(hào):"+jIndex);

}}程序運(yùn)行的結(jié)果:任務(wù)進(jìn)階1、單個(gè)字符輸入與輸出。【例2-21】:編制一個(gè)程序,接收用戶從鍵盤輸入的一個(gè)字符并輸出。importjava.io.*;publicclassDemo2_21{ publicstaticvoidmain(Stringargs[]){ charc='a'; System.out.print("Enteracharacterplease:"); try{ c=(char)System.in.read(); System.out.println("You'veenteredcharacter"+c); }catch(IOExceptione){ }; }}程序運(yùn)行的結(jié)果:2、字符串的輸入輸出?!纠?-22】:編制一個(gè)程序,接收用戶從鍵盤輸入的一個(gè)字符串并輸出。importjava.io.*;publicclassDemo2_22{ publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in)); Stringstr; System.out.print("請(qǐng)輸入一個(gè)字符串:");str=buf.readLine(); System.out.println("您輸入的字符串是:"+str);}}程序運(yùn)行的結(jié)果:3、數(shù)值的輸入輸出。從鍵盤上輸入數(shù)值類型的數(shù)據(jù),采用Scanner類,調(diào)用該類中的next×××()方法來(lái)完成數(shù)據(jù)的輸入,如下:nextInt()//表示從鍵盤上接受一個(gè)整型數(shù)據(jù)nextDouble()//從鍵盤上接受一個(gè)double類型的數(shù)據(jù)nextFloat()//從鍵盤上接受一個(gè)float類型的數(shù)據(jù)nextLong()//從鍵盤上接受一個(gè)long類型的數(shù)據(jù)【例2-23】:編制一個(gè)程序,接收用戶從鍵盤輸入的一個(gè)整型數(shù)據(jù),之后把用戶輸入的數(shù)據(jù)輸出來(lái)。importjava.io.*;publicclassDemo2_23{ publicstaticvoidmain(String[]args)throwsIOException{ intnum; Stringstr; BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in)); System.out.print("請(qǐng)輸入一個(gè)整數(shù):"); str=buf.readLine(); //將輸入的文字指定給字符串變量 num=Integer.parseInt(str); //A行 System.out.println("這個(gè)整數(shù)是:"+num); }}程序運(yùn)行的結(jié)果:循環(huán)嵌套應(yīng)用循環(huán)嵌套是指循環(huán)體中包含了其他循環(huán)語(yǔ)句的情況,循環(huán)語(yǔ)句有while語(yǔ)句、do…while語(yǔ)句和for語(yǔ)句,它們自身進(jìn)行嵌套,也可以相互嵌套。下面給出部分循環(huán)嵌套語(yǔ)法格式,如圖2-4所示,實(shí)際循環(huán)嵌套形式還有很多種?!纠?-24】:輸出九九乘法表:要求按如下格式輸出九九乘法表1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81程序代碼如下:publicclassDemo2_24{publicstaticvoidmain(String[]args){for(inti=1;i<10;i++){for(intj=1;j<10;j++){System.out.println(i+"*"+j+"="+i*j+"");if(i==j){System.out.println("");break; }}}}}程序運(yùn)行的結(jié)果:數(shù)組應(yīng)用2.4.4數(shù)組應(yīng)用【例2-25】:冒泡排序:基本思想:在要排序的一組數(shù)中,對(duì)當(dāng)前還未排好序的范圍內(nèi)的全部數(shù),自上而下對(duì)相鄰的兩個(gè)數(shù)依次進(jìn)行比較和調(diào)整。依次比較相鄰的兩個(gè)數(shù),讓較大的數(shù)往下沉,較小的數(shù)往上浮。第一趟比較:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。第二趟比較是重復(fù)第一趟步驟,直至全部排序完成。第一趟比較完成后,最后一個(gè)數(shù)一定是數(shù)組中最大的一個(gè)數(shù),所以第二趟比較的時(shí)候最后一個(gè)數(shù)不參與比較;第二趟比較完成后,倒數(shù)第二個(gè)數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時(shí)候最后兩個(gè)數(shù)不參與比較;依次類推,每一趟比較次數(shù)-1;……舉例說(shuō)明:要排序數(shù)組:int[]

arr={7,4,8,3,9,2};

第一趟排序:第一次排序:7和4比較,7大于4,交換位置:4

7

8

3

9

2第二次排序:7和8比較,7小于8,不交換位置:4

7

8

3

9

2第三次排序:8和3比較,8大于3,交換位置:4

7

3

8

9

2第四次排序:8和9比較,8小于9,不交換位置:4

7

3

8

9

2第五次排序:9和2比較:9大于2,交換位置:4

7

3

8

2

9第一趟總共進(jìn)行了5次比較,排序結(jié)果:4

7

3

8

2

9---------------------------------------------------------------------第二趟排序:第一次排序:4和7比較,4小于7,不交換位置:4

7

3

8

2

9第二次排序:7和3比較,7大于3,交換位置:4

3

7

8

2

9第三次排序:7和8比較,7大于8,不交換位置:4

3

7

8

2

9第四次排序:8和2比較,8大于2,交換位置:4

3

7

2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論