




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章類(lèi)的方法成員4.1方法的設(shè)計(jì)4.2方法中的分支語(yǔ)句4.3方法中的循環(huán)語(yǔ)句和跳轉(zhuǎn)語(yǔ)句4.4使用Javadoc工具制作幫助文檔4.5Java程序的編寫(xiě)規(guī)則第4章類(lèi)的方法成員學(xué)習(xí)目標(biāo)
掌握成員方法的聲明;
學(xué)會(huì)使用重載技術(shù)設(shè)計(jì)程序;
理解Java語(yǔ)言中方法調(diào)用時(shí)參數(shù)的傳遞過(guò)程;
掌握J(rèn)ava語(yǔ)言中分支程序的設(shè)計(jì);
掌握J(rèn)ava語(yǔ)言中循環(huán)程序的設(shè)計(jì);
理解跳轉(zhuǎn)語(yǔ)句continue和break的功能;
了解使用Javadoc工具制作幫助文檔的方法;
理解Java程序的編寫(xiě)規(guī)范。一個(gè)類(lèi)由數(shù)據(jù)成員和方法成員組成。方法成員對(duì)類(lèi)中的數(shù)據(jù)成員進(jìn)行一些操作,它由一段程序代碼組成。類(lèi)中定義的方法與C語(yǔ)言中的函數(shù)類(lèi)似,但在Java語(yǔ)言中不允許有單獨(dú)的函數(shù)存在,函數(shù)只能定義在類(lèi)中。所以,在面向?qū)ο蟪绦蛟O(shè)計(jì)中,一般將由一個(gè)名稱(chēng)標(biāo)識(shí)、具有一定功能的程序段叫方法,而不叫函數(shù)(習(xí)慣上,有時(shí)候人們也將方法稱(chēng)為函數(shù))。一個(gè)方法由完成一定功能的語(yǔ)句組成。本章將介紹方法的設(shè)計(jì)技術(shù)和方法的主要組成語(yǔ)句?;炯寄?.1方?法?的?設(shè)?計(jì)一個(gè)方法在類(lèi)中進(jìn)行聲明(或叫定義)之后,如果實(shí)例化了該類(lèi)的一個(gè)對(duì)象,那么該對(duì)象就可以執(zhí)行方法中定義的操作。下面介紹方法聲明與方法調(diào)用的有關(guān)知識(shí)。4.1.1方法的聲明與調(diào)用
1.方法的聲明在一個(gè)類(lèi)中,方法的聲明格式如下:
[修飾符]返回值類(lèi)型方法名(參數(shù)列表) {
方法體
}修飾符是可選項(xiàng),用在方法上的修飾符被稱(chēng)為方法修飾符,與第3章介紹的數(shù)據(jù)成員修飾符類(lèi)似。方法修飾符主要有public、private、protected、static、final和abstract等(其中public、private和static在前面的章節(jié)中已經(jīng)介紹過(guò),protected、final和abstract將在第5章中介紹)。它們的含義簡(jiǎn)要說(shuō)明如下:●?public:用它修飾的方法,在任何包中的任何程序中都能被訪問(wèn)。●?private:用它修飾的方法,只能在定義該方法的類(lèi)中被訪問(wèn)?!?protected:用它修飾的方法,可以被所在包中的類(lèi)或者在任何包中該類(lèi)的子類(lèi)訪問(wèn)?!?static:用它修飾的方法稱(chēng)為類(lèi)方法或靜態(tài)方法,可以通過(guò)類(lèi)名直接調(diào)用?!?final:可以用它定義最終方法,最終方法不能在子類(lèi)中進(jìn)行修改?!?abstract:可以用它定義抽象方法,抽象方法必須在具體的子類(lèi)中實(shí)現(xiàn)。方法可以返回一個(gè)值,返回值的類(lèi)型要在方法名前面明確指出。方法可以返回簡(jiǎn)單類(lèi)型(如返回int型)數(shù)據(jù),也可以返回類(lèi)類(lèi)型(如返回String型)數(shù)據(jù)。若方法不返回值,則返回值類(lèi)型要寫(xiě)關(guān)鍵字void,并且不能省略。因此,除了第2章介紹的構(gòu)造方法外,所有的方法都要求有返回值類(lèi)型。方法名可以是任何有效的Java語(yǔ)言標(biāo)識(shí)符(具體命名規(guī)則可參考第3.7節(jié))。方法根據(jù)實(shí)際情況可以有參數(shù)列表,也可以無(wú)參數(shù)列表(即無(wú)參數(shù)方法)。參數(shù)的類(lèi)型可以為任意類(lèi)型,多個(gè)參數(shù)之間要使用“,”分隔。方法體應(yīng)該由Java語(yǔ)言中的有效語(yǔ)句組成。如果方法首部的返回值類(lèi)型不是void,則在方法體中就要有關(guān)鍵字return。return語(yǔ)句的格式很簡(jiǎn)單,在其后直接跟返回值的表達(dá)式即可。其格式如下:
return表達(dá)式;要注意,表達(dá)式一定要保證方法能返回相應(yīng)數(shù)據(jù)類(lèi)型的值。但對(duì)于有些程序,即使有正確的return語(yǔ)句,也不能保證程序的正確。例如:01publicclassTestReturn{02 publicstaticvoidmain(String[]args){03 System.out.println(test(3));04 }05 staticinttest(inta){06 if(a>0)07 returna;08 /*else09 return-a;*/10 }11}該程序編譯時(shí),將發(fā)生“缺少return語(yǔ)句”的錯(cuò)誤,因?yàn)榉椒╰est不能保證在任何情況下都有返回值(如果去掉注釋?zhuān)瑒t可以編譯成功)。另外,當(dāng)把return語(yǔ)句放在一個(gè)循環(huán)語(yǔ)句的循環(huán)體中時(shí),也可能出現(xiàn)編譯錯(cuò)誤(案例4-2中將演示該錯(cuò)誤),因?yàn)榫幾g時(shí)會(huì)認(rèn)為這個(gè)循環(huán)體有可能不被執(zhí)行(除非寫(xiě)成do循環(huán)或者無(wú)限循環(huán)的形式)。注意:返回值類(lèi)型為void的方法也可以使用return語(yǔ)句,這時(shí)return語(yǔ)句的功能是終止方法的執(zhí)行并返回到該方法的調(diào)用者。這時(shí),return語(yǔ)句后不能出現(xiàn)表達(dá)式(即為空的return語(yǔ)句)。
2.方法的調(diào)用根據(jù)方法是否有返回值,可分為兩種調(diào)用格式:
(1)方法有返回值時(shí)的調(diào)用。如果方法返回一個(gè)值,則通常以表達(dá)式的方式調(diào)用。例如,java.lang包中的數(shù)學(xué)函數(shù)類(lèi)Math中,定義了求兩個(gè)數(shù)中最大值的max方法,則通常按類(lèi)似于下列的格式調(diào)用:intlarger=Math.max(3,4)*3;System.out.println(Math.max(3,4));
(2)方法無(wú)返回值時(shí)的調(diào)用。如果方法返回類(lèi)型為void,即無(wú)返回值,則這時(shí)對(duì)方法以語(yǔ)句的形式調(diào)用。如System類(lèi)中終止程序執(zhí)行的方法exit,只能按類(lèi)似于下列的格式調(diào)用:
System.exit(1);4.1.2【案例4-1】累加器
1.案例描述編寫(xiě)一個(gè)類(lèi),以完成累加器的功能。要求可以對(duì)存放在整型數(shù)組或?qū)嵭蛿?shù)組中的一批數(shù)進(jìn)行累加運(yùn)算。
2.案例效果案例程序的執(zhí)行效果如圖4-1所示。圖中第3行為整型數(shù)組中元素的值及其累加和,第4行為實(shí)型數(shù)組中元素的值及其累加和。圖4-1案例4-1的執(zhí)行效果
3.技術(shù)分析該程序比較簡(jiǎn)單,技術(shù)分析略。
4.程序解析下面是案例4-1的程序代碼。01//*******************************************02//案例:4-1程序名:TestAdder.java03//功能:累加器程序,可以求整型數(shù)組或?qū)嵭蛿?shù)組元素的累加和04//*****************************************0506classAdder{07 08 privateAdder(){}09 10 publicstaticfloatsum(float[]f){11 floattemp=0.0f;12 for(inti=0;i<f.length;i++){13 temp=temp+f[i];14 }15 returntemp;16 }1718 publicstaticintsum(int[]k){19 inttemp=0;20 for(inti=0;i<k.length;i++){21 temp=temp+k[i];22 }23 returntemp;24 }25}2627classTestAdder{28 publicstaticvoidmain(String[]args){29 //Addera=newAdder();30 31 //下面是測(cè)試整型數(shù)組求和的程序段32 int[]x={2,34,12,45,23,41,1};33 for(inti=0;i<x.length;i++){34 if(i==x.length-1)35 System.out.print(x[x.length-1]+"=");36 else37 System.out.print(x[i]+"+");38 }39 System.out.println(Adder.sum(x));40 41 //下面是測(cè)試實(shí)型數(shù)組求和的程序段42 float[]y={2.34f,23.34f,12.45f,234.45f,10f};43 for(inti=0;i<y.length;i++){if(i==y.length-1)45 System.out.print(y[y.length-1]+"=");46 else47 System.out.print(y[i]+"+");48 }49 System.out.println(Adder.sum(y));50 }51}該程序中,08行定義了一個(gè)無(wú)參的構(gòu)造方法“privateAdder(){}”,該構(gòu)造方法的修飾符為private,說(shuō)明在Adder類(lèi)的外面不能使用構(gòu)造方法創(chuàng)建一個(gè)該對(duì)象的實(shí)例。那么,Adder類(lèi)如何在程序中使用呢?在Adder類(lèi)中,定義的求和的方法為靜態(tài)的(static)和公有的(public),所以在其他類(lèi)中可以直接使用Adder類(lèi)中求和的成員方法。注意,在Adder類(lèi)中定義的兩個(gè)方法名稱(chēng)都為sum,只是參數(shù)類(lèi)型和返回值類(lèi)型不同,這就是在第2章中介紹過(guò)的方法重載。一般成員方法的重載與構(gòu)造方法的重載類(lèi)似,都是指兩個(gè)方法具有相同的名稱(chēng)和不同的形式參數(shù)。方法名與形式參數(shù)一般合稱(chēng)為方法頭標(biāo)志。調(diào)用方法時(shí),Java系統(tǒng)能夠根據(jù)方法頭標(biāo)志決定調(diào)用哪個(gè)方法。在JavaAPI中有很多方法是重載的,如第3章介紹過(guò)的Arrays類(lèi),其sort方法就有十幾個(gè)重載的版本。方法重載的優(yōu)點(diǎn)是執(zhí)行相似任務(wù)的方法可以使用相同的名稱(chēng),可使程序清晰、易讀。注意:被重載的方法必須具有不同的參數(shù)形式。也就是說(shuō)重載的方法,其方法名必須相同,參數(shù)必須不同(指參數(shù)的類(lèi)型、個(gè)數(shù)或順序不同),不能通過(guò)返回值類(lèi)型和方法的修飾符來(lái)區(qū)別重載的方法。如下面的三個(gè)方法不能進(jìn)行重載(因?yàn)檫@三個(gè)方法的參數(shù)都是int型):
publicvoidm1(inta){…}
publicintm1(intb){…}
intm1(intc){…}下面的兩個(gè)方法可以進(jìn)行重載:
publicvoidm1(inta,floatb){…}
publicvoidm1(floatb,inta){…}4.1.3【相關(guān)知識(shí)】參數(shù)傳遞在方法定義中列出的參數(shù)叫形式參數(shù),簡(jiǎn)稱(chēng)為形參;在方法調(diào)用時(shí)給出的參數(shù)叫實(shí)在參數(shù),簡(jiǎn)稱(chēng)為實(shí)參。Java語(yǔ)言中,調(diào)用一個(gè)方法時(shí)將實(shí)參值拷貝給對(duì)應(yīng)的形參。下面舉例說(shuō)明參數(shù)的傳遞情況。
1.參數(shù)為簡(jiǎn)單類(lèi)型時(shí)的傳遞情況下面的程序中,其方法中的參數(shù)是簡(jiǎn)單類(lèi)型的。請(qǐng)分析下面程序執(zhí)行的結(jié)果。
01classTestParam{
02 staticvoidchange(inta){
03 a=12;
04 }05 06 publicstaticvoidmain(String[]args){07 inta=1;08 change(a);09 System.out.println("a="+a);10 }11}程序運(yùn)行后,輸出的a是多少?分析該程序時(shí)要注意,從表面上看好像a的結(jié)果應(yīng)該為12。但其實(shí)該程序的執(zhí)行過(guò)程是這樣的,在main方法中定義了一個(gè)局部變量a,a的初值為1,這個(gè)a只在main方法內(nèi)有效,如圖4-2(a)所示。08行調(diào)用change方法時(shí),系統(tǒng)給02行方法change的形參a分配一個(gè)內(nèi)存空間,并將主方法中a的值1拷貝給change方法的參數(shù)a,如圖4-2(b)所示,這個(gè)形參a只是一個(gè)在change方法內(nèi)有效的局部變量,拷貝過(guò)程完成后,參數(shù)的傳遞過(guò)程也隨之結(jié)束,main方法中的局部變量a和change方法中的局部變量a就沒(méi)有關(guān)系了。所以,在03行改變的只是change方法中的局部變量a的值(將其改為12),如圖4-2(c)所示,對(duì)main方法中的變量a沒(méi)有影響。當(dāng)change方法執(zhí)行完成后,程序返回到main方法時(shí),change方法中的局部變量a的生命周期結(jié)束,即分配的內(nèi)存被系統(tǒng)回收,如圖4-2(d)所示,所以09行輸出的還是1。圖4-2參數(shù)為簡(jiǎn)單類(lèi)型時(shí)的傳遞過(guò)程
2.參數(shù)為對(duì)象類(lèi)型時(shí)的傳遞情況下面程序中,其方法中的參數(shù)是數(shù)組對(duì)象。請(qǐng)分析下面的程序,看與上面的實(shí)例程序有什么不同。
01importjava.util.*;
02classTestParam1{
03 staticvoidchange(int[]b){
04 Arrays.fill(b,10);
05 }
06 07 publicstaticvoidmain(String[]args){08 int[]a={1,2,3,4,5,6};09 change(a);10 for(inti=0;i<a.length;i++)11 System.out.println(a[i]);12 }13}程序運(yùn)行后,輸出的數(shù)組元素值是什么?該程序的執(zhí)行過(guò)程分析如下:在main方法中定義了一個(gè)局部數(shù)組a,并給a數(shù)組的元素提供了1~6的初值,如圖4-3(a)所示(假設(shè)分配給數(shù)組對(duì)象a的內(nèi)存地址從0x1000開(kāi)始)。數(shù)組a由于在main方法中定義,因此其有效范圍為main方法。09行調(diào)用方法change時(shí),將主方法main中的數(shù)組對(duì)象a作為參數(shù),傳遞給change方法的形參對(duì)象b(b也是一個(gè)整型數(shù)組),系統(tǒng)就會(huì)將數(shù)組對(duì)象變量a中存放的0x1000(即引用)拷貝給方法change的參數(shù)b,如圖4-3(b)所示。這時(shí)main方法中定義的局部數(shù)組a和change方法中定義的局部數(shù)組b指向了相同的內(nèi)存區(qū),即它們的引用相同。
04行調(diào)用Arrays的fill方法時(shí),對(duì)change方法中形參數(shù)組b的所有元素填充為10,則相應(yīng)內(nèi)存中main方法中的局部數(shù)組a和change方法中的局部數(shù)組b指向的數(shù)據(jù)元素都被改為10,如圖4-3(c)所示。當(dāng)方法change執(zhí)行完成后,程序返回到main方法時(shí),change方法中局部數(shù)組b的生命周期結(jié)束,即從內(nèi)存消失(分配給數(shù)組對(duì)象變量b的存放引用的內(nèi)存單元被回收),如圖4-3(d)所示。所以,最后main方法中局部數(shù)組a的所有元素被改變。圖4-3參數(shù)為對(duì)象(數(shù)組)時(shí)的傳遞過(guò)程4.2方法中的分支語(yǔ)句在一個(gè)方法中,流程控制語(yǔ)句用來(lái)控制程序中各語(yǔ)句的執(zhí)行順序。Java語(yǔ)言提供的控制語(yǔ)句分為分支語(yǔ)句和循環(huán)語(yǔ)句?!穹种дZ(yǔ)句■簡(jiǎn)單if語(yǔ)句和if-else語(yǔ)句;■嵌套的if語(yǔ)句;■?switch語(yǔ)句?!裱h(huán)語(yǔ)句■?while循環(huán)、do循環(huán)和for循環(huán);■嵌套的循環(huán)語(yǔ)句;■?break和continue關(guān)鍵字。4.2.1分支流程控制
Java中的分支語(yǔ)句有兩種:雙分支if語(yǔ)句和多分支switch語(yǔ)句。if語(yǔ)句應(yīng)用在“二選一”的情況下,而switch語(yǔ)句應(yīng)用在“多選一”的情況下。
1.簡(jiǎn)單if語(yǔ)句簡(jiǎn)單if語(yǔ)句只在條件為真時(shí)執(zhí)行語(yǔ)句。其語(yǔ)法如下:
if(布爾表達(dá)式)語(yǔ)句其格式中的語(yǔ)句可以是一組語(yǔ)句。例如:
if((i>=0)&&(i<=10)){
f=i;
System.out.println("iisanintegerbetween0and10");
}注意:與C語(yǔ)言不同,if后面必須是布爾型的表達(dá)式,而不能是數(shù)值型的,因?yàn)镴ava語(yǔ)言中的布爾型是獨(dú)立的數(shù)據(jù)類(lèi)型。
2.?if-else語(yǔ)句
if-else語(yǔ)句在當(dāng)指定的布爾表達(dá)式為true時(shí),執(zhí)行一組語(yǔ)句(也可是一條語(yǔ)句);為false時(shí),執(zhí)行另一組語(yǔ)句。其語(yǔ)法如下:
if(布爾表達(dá)式){布爾表達(dá)式為真時(shí)執(zhí)行的語(yǔ)句;
}
else{布爾表達(dá)式為假時(shí)執(zhí)行的語(yǔ)句;
}例如:
if(radius>=0){
area=radius*radius*PI;
System.out.println("圓的面積是:"+area);
}
else{
System.out.println("半徑不能為負(fù)數(shù)");
}注意:當(dāng)花括號(hào)中只有一條語(yǔ)句時(shí),花括號(hào)可以省略。但為了程序邏輯結(jié)構(gòu)的清晰,盡量不要省略花括號(hào)。
3.嵌套的if語(yǔ)句
if或if-else中要執(zhí)行的語(yǔ)句可以是任意合法的Java語(yǔ)句,當(dāng)然也包括其他if或if-else語(yǔ)句。如果一條if語(yǔ)句中還包含其他的if語(yǔ)句(或if-else語(yǔ)句),或一條if-else語(yǔ)句中還包含其他的if語(yǔ)句(或if-else語(yǔ)句),則構(gòu)成if語(yǔ)句的嵌套。例如:
if(i>k){
if(j>k)
System.out.println("k是i和j三個(gè)數(shù)比較小的一個(gè)");
}
else System.out.println("i等于或者小于k");注意:該例中如果將花括號(hào)去掉,則會(huì)造成理解上的二義性,既可以認(rèn)為else與外層的if匹配,也可以認(rèn)為else與內(nèi)層的if匹配。沒(méi)有花括號(hào)時(shí),一般在程序設(shè)計(jì)語(yǔ)言中規(guī)定,else語(yǔ)句將與最近的if語(yǔ)句相匹配。請(qǐng)讀者思考,如果將上例程序中的{}去掉,結(jié)果正確嗎?如當(dāng)i=3、j=1、k=2時(shí),最后輸出else分支內(nèi)語(yǔ)句,這是錯(cuò)誤的結(jié)果。當(dāng)有多重if語(yǔ)句嵌套在else語(yǔ)句中時(shí),常使用如下的書(shū)寫(xiě)風(fēng)格:
if(布爾表達(dá)式1)語(yǔ)句1
elseif(布爾表達(dá)式2)語(yǔ)句2
elseif(布爾表達(dá)式3)語(yǔ)句3 elseif(布爾表達(dá)式n)語(yǔ)句n
else語(yǔ)句n+1;這個(gè)風(fēng)格可以避免深層縮進(jìn),使程序容易閱讀。
4.多路分支語(yǔ)句switch
switch語(yǔ)句的一般形式如下:
switch(表達(dá)式){
case常量1:語(yǔ)句塊1;//分支1
case常量2:語(yǔ)句塊2;//分支2
…
case常量n:語(yǔ)句塊n;//分支n
default:語(yǔ)句塊n+1;//分支n+1
}在使用switch語(yǔ)句時(shí)要注意以下問(wèn)題:●?switch后表達(dá)式的值必須是byte、char、short或int類(lèi)型的,不能使用浮點(diǎn)類(lèi)型或long類(lèi)型,也不能為一個(gè)字符串,并且必須寫(xiě)在一對(duì)括號(hào)內(nèi)?!?case子句中常量的類(lèi)型必須與表達(dá)式的類(lèi)型相容,而且每個(gè)case子句中常量的值必須是不同的?!?default子句是可選的,當(dāng)表達(dá)式的值與任一個(gè)case子句中的值都不匹配時(shí),就執(zhí)行default后的語(yǔ)句?!袢绻麤](méi)有使用break語(yǔ)句作為某一個(gè)case代碼段的結(jié)束句,則程序的執(zhí)行將繼續(xù)到下一個(gè)case,而不檢查case表達(dá)式的值。4.2.2【案例4-2】計(jì)算償還金
1.案例描述設(shè)計(jì)程序,根據(jù)年貸款利率、貸款年限和貸款額,計(jì)算償還金額。本題中,假設(shè)只有三種貸款方式,即3年期、5年期和10年期,其利率分別是:3年期為7%,5年期為8%,10年期為10%。
2.案例效果案例的執(zhí)行結(jié)果如圖4-4所示。圖4-4案例4-2的執(zhí)行結(jié)果
3.技術(shù)分析該程序要使用if語(yǔ)句,根據(jù)不同的貸款年限來(lái)計(jì)算利息。
4.程序解析案例程序如下:01//**********************************************02//案例:4-2程序名:TestCash.java03//功能:計(jì)算償還金04//**********************************************0506classCash{07 //lendAmount為貸款數(shù)量08 privatefloatlendAmount;09 //lendYear為貸款年限10 privateintlendYear;11 //下面3個(gè)常量為年利率13 privatefinalfloatTHREE_YEAR_INTEREST_RATE=0.07F;14 privatefinalfloatFIVE_YEAR_INTEREST_RATE=0.08F;15 privatefinalfloatTEN_YEAR_INTEREST_RATE=0.10F;16 17 //有參數(shù)的構(gòu)造方法18 publicCash(floatlendAmount,intlendYear){19 this.lendAmount=lendAmount;20 this.lendYear=lendYear;21 }22 23 //計(jì)算償還金24 privatefloatcompensateAmount(){25 if(lendYear==3)26 returnlendAmount*lendYear*THREE_YEAR_INTEREST_RATE+lendAmount;27 elseif(lendYear==5)28 returnlendAmount*lendYear*FIVE_YEAR_INTEREST_RATE+lendAmount;29 elseif(lendYear==10)30 returnlendAmount*lendYear*FIVE_YEAR_INTEREST_RATE+lendAmount; 31 else{32 System.out.println("貸款年限只能是3年、5年或10年!");33 System.exit(-1);34 return0.0f;35 }36 }37 38 //顯示貸款信息和償還金39 publicvoidshowCompensateAmount(){40 System.out.println("共貸款"+lendAmount+"元,"+lendYear+"年后的償還金為"+compensateAmount()+"元");41 }42}4344classTestCash{45 publicstaticvoidmain(Stringargs[]){46 Cashc1=newCash(2000.0f,3);47 c1.showCompensateAmount();48 49 Cashc2=newCash(10000.0f,5);50 c2.showCompensateAmount();51 52 Cashc3=newCash(10000.0f,10);53 c3.showCompensateAmount();54 }55}該程序的13行、14行和15行定義了3個(gè)存放年利率的常量。注意,常量標(biāo)識(shí)符一般用大寫(xiě)字母表示。注意,第34行在程序中其實(shí)是多余的,但將其去掉,程序?qū)⒉荒苷_編譯。4.2.3【相關(guān)知識(shí)】在方法中使用常量在第3章介紹過(guò),在類(lèi)中final修飾的數(shù)據(jù)成員是常量成員,其值不能在程序中進(jìn)行修改。在方法中,也可以用final說(shuō)明局部常量,但與類(lèi)中final說(shuō)明的常量成員有一點(diǎn)不同。看下面的實(shí)例:01classTestFinal{02 staticfinalintb=5;03 publicstaticvoidmain(String[]args){04 finalinta;05 a=45;06 //Temp.b=34;07 //a=50;08 }09}第02行如給成員常量b不賦初值,則程序編譯有錯(cuò)誤,但第04行在方法中說(shuō)明的局部常量a,可以在以后賦值,但只能賦一次值。所以,程序的第06行和第07行均有錯(cuò)誤。4.3方法中的循環(huán)語(yǔ)句和跳轉(zhuǎn)語(yǔ)句
Java語(yǔ)言與C語(yǔ)言類(lèi)似,也有3種循環(huán)語(yǔ)句,即for、do-while和while循環(huán)。Java程序中的跳轉(zhuǎn)語(yǔ)句經(jīng)常使用在循環(huán)中。4.3.1循環(huán)語(yǔ)句和跳轉(zhuǎn)語(yǔ)句循環(huán)結(jié)構(gòu)的程序是在一定條件下,反復(fù)執(zhí)行某段程序的流程結(jié)構(gòu),被反復(fù)執(zhí)行的程序稱(chēng)為循環(huán)體。
1.?while語(yǔ)句
while語(yǔ)句的語(yǔ)法格式如下:
while(布爾表達(dá)式){循環(huán)體
}
while語(yǔ)句的循環(huán)條件是一個(gè)布爾表達(dá)式,它必須放在括號(hào)中。在循環(huán)體執(zhí)行前,先計(jì)算布爾表達(dá)式,若結(jié)果為true,則執(zhí)行循環(huán)體;若結(jié)果為false,則終止循環(huán)體的執(zhí)行,程序轉(zhuǎn)移到while循環(huán)后的語(yǔ)句執(zhí)行。
2.?do-while語(yǔ)句
do-while語(yǔ)句的語(yǔ)法格式如下:
do{循環(huán)體
}while(布爾表達(dá)式)
do-while循環(huán)先執(zhí)行循環(huán)體,再計(jì)算循環(huán)條件,若計(jì)算結(jié)果為true,則執(zhí)行循環(huán)體;若為false,則終止do循環(huán)的執(zhí)行。
while循環(huán)和do-while循環(huán)的比較:
(1)?while循環(huán)先計(jì)算布爾表達(dá)式的值,再根據(jù)計(jì)算結(jié)果確定是否執(zhí)行循環(huán)體,因此循環(huán)體有可能一次也不執(zhí)行。
(2)?do循環(huán)先執(zhí)行循環(huán)體,然后再計(jì)算布爾表達(dá)式的值,因此循環(huán)體要至少被執(zhí)行一次。因此,若循環(huán)體中的語(yǔ)句至少需要執(zhí)行一次,建議使用do循環(huán),否則可以使用while語(yǔ)句。
3.?for語(yǔ)句
for語(yǔ)句的語(yǔ)法格式如下:
for(循環(huán)變量初始化;循環(huán)條件;循環(huán)變量調(diào)整語(yǔ)句){循環(huán)體
}
for循環(huán)語(yǔ)句以關(guān)鍵字for開(kāi)始,for后面的括號(hào)中是3個(gè)由分號(hào)分開(kāi)的控制元素,它們都以表達(dá)式的方式出現(xiàn)。循環(huán)條件用于控制循環(huán)體的執(zhí)行次數(shù),其結(jié)果應(yīng)該為一個(gè)布爾值。循環(huán)體在花括號(hào)中,當(dāng)然只有一條循環(huán)體語(yǔ)句時(shí),可以不要花括號(hào)。為了使程序結(jié)構(gòu)清晰,建議在任何情況下都寫(xiě)上花括號(hào)。注意:for循環(huán)一般使用在循環(huán)次數(shù)事先確定的情況下,而while和do-while循環(huán)一般用在循環(huán)次數(shù)事先不確定的情況下。在for循環(huán)、while循環(huán)和do-while循環(huán)的循環(huán)體中,都可以出現(xiàn)其他的循環(huán)語(yǔ)句,也就是說(shuō)它們都可以嵌套。嵌套循環(huán)由一個(gè)外層循環(huán)和一個(gè)或多個(gè)內(nèi)層循環(huán)組成。每當(dāng)外層循環(huán)重復(fù)時(shí),就重新進(jìn)入內(nèi)部循環(huán),重新計(jì)算它的循環(huán)控制參數(shù)。
4.跳轉(zhuǎn)語(yǔ)句跳轉(zhuǎn)語(yǔ)句用來(lái)實(shí)現(xiàn)程序執(zhí)行過(guò)程中流程的轉(zhuǎn)移。Java的跳轉(zhuǎn)語(yǔ)句有三個(gè):continue、break和return。其中return語(yǔ)句用于從被調(diào)用的方法中返回到調(diào)用方法中。下面主要介紹break和continue語(yǔ)句。
1)?continue語(yǔ)句
continue語(yǔ)句用于循環(huán)結(jié)構(gòu)中,表示終止當(dāng)前這輪循環(huán)體的執(zhí)行,直接進(jìn)入下一輪循環(huán)。continue語(yǔ)句通常有兩種使用情況:
(1)不帶標(biāo)號(hào)的continue語(yǔ)句:用來(lái)結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,回到循環(huán)體的條件測(cè)試部分繼續(xù)執(zhí)行。例如:01//測(cè)試不帶標(biāo)號(hào)的continue語(yǔ)句02publicclassTestCont1{03 publicstaticvoidmain(String[]args){04 intindex=0;05 while(index<=99){06 index+=10;07 if(index%20==0)08 continue;09 System.out.println("Theindexis"+index);10 }11 }12}第07行表示當(dāng)index的值能被20整除時(shí),循環(huán)回到05行的while語(yǔ)句處,進(jìn)行下輪循環(huán)的條件測(cè)試,而不像正常處理那樣去執(zhí)行后面的09行輸出語(yǔ)句。程序的運(yùn)行結(jié)果如圖4-5所示。圖4-5TestCout1.java程序的執(zhí)行結(jié)果
(2)帶標(biāo)號(hào)的continue語(yǔ)句:用來(lái)跳過(guò)標(biāo)號(hào)所指語(yǔ)句塊中所剩的語(yǔ)句,回到標(biāo)號(hào)所指語(yǔ)句塊的條件測(cè)試部分繼續(xù)執(zhí)行(具體應(yīng)用見(jiàn)本節(jié)案例程序)。
Java語(yǔ)言中,標(biāo)號(hào)常用于標(biāo)識(shí)一個(gè)語(yǔ)句塊或一個(gè)循環(huán),標(biāo)號(hào)用有效的標(biāo)識(shí)符表示。一般將標(biāo)號(hào)放在語(yǔ)句塊的開(kāi)頭或某一循環(huán)的開(kāi)頭。
2)?break語(yǔ)句
break語(yǔ)句用于從一個(gè)語(yǔ)句塊中跳轉(zhuǎn)出來(lái),進(jìn)入該語(yǔ)句塊后面的語(yǔ)句繼續(xù)執(zhí)行程序。break語(yǔ)句通常在switch語(yǔ)句和循環(huán)語(yǔ)句中使用。break語(yǔ)句也有兩種用法:
(1)無(wú)標(biāo)號(hào)的break語(yǔ)句:用于跳出switch語(yǔ)句或當(dāng)前循環(huán),但與continue語(yǔ)句不同的是,continue語(yǔ)句將使循環(huán)進(jìn)入下一次,而break語(yǔ)句將結(jié)束循環(huán)的執(zhí)行。
(2)帶標(biāo)號(hào)的break語(yǔ)句:用于結(jié)束標(biāo)號(hào)標(biāo)注語(yǔ)句塊的執(zhí)行。break語(yǔ)句的標(biāo)號(hào)應(yīng)標(biāo)注在一個(gè)語(yǔ)句塊的開(kāi)頭。請(qǐng)分析下面程序的執(zhí)行過(guò)程:1L1:{2 a=45;3 L2:{ System.out.println("a="+2);4 if(a==45) breakL1;5 System.out.println("a="+12);6 }7 System.out.println("a="+3);8}9…如果第4行的break語(yǔ)句后面不帶標(biāo)號(hào)L1,則第4行的跳轉(zhuǎn)語(yǔ)句只跳出L2語(yǔ)句塊,因此第7行的輸出語(yǔ)句還要被執(zhí)行。但break帶了標(biāo)號(hào)L1后,如果第4行的條件成立,則第7行的語(yǔ)句不被執(zhí)行,即程序跳出L1標(biāo)號(hào)所指的語(yǔ)句塊,即從第9行開(kāi)始繼續(xù)執(zhí)行程序。4.3.2【案例4-3】求素?cái)?shù)
1.案例描述給定一個(gè)大于1的正整數(shù),求從1到該數(shù)之間的所有素?cái)?shù)。
2.案例效果案例程序的執(zhí)行效果如圖4-6所示。圖4-6案例4-3的執(zhí)行結(jié)果
3.技術(shù)分析可以根據(jù)素?cái)?shù)的定義判斷一個(gè)數(shù)是不是素?cái)?shù)。如要判斷7是不是素?cái)?shù),可以用7分別除以2到6之間的所有整數(shù),如果都不能整除,則說(shuō)明7就是素?cái)?shù)。求素?cái)?shù)的算法描述如下:for(i從1循環(huán)到正整數(shù)n){for(j從2循環(huán)到i-1){
判斷i能否被j整除;如果能整除就轉(zhuǎn)到外循環(huán),取下一個(gè)i執(zhí)行程序
}
輸出i(如果i不能被2到i-1之間的數(shù)據(jù)所整除,則說(shuō)明i是素?cái)?shù));}
4.程序解析下面是案例4-3的程序代碼。01//************************************************02//案例:4.3程序名:TestPrime.java03//功能:求1到給定整數(shù)之間的所有素?cái)?shù)04//************************************************0506classPrime{07 privateintn;08 09 Prime(intn){10 this.n=n;11 }12 13 publicvoidoutputPrime(){14 System.out.println("1到"+n+"之間的所有素?cái)?shù)如下:");15 intlineControl=0;16 outer:for(inti=1;i<n;i++) {17 for(intj=2;j<i;j++){18 if(i%j==0)continueouter;19 }20 System.out.print(i+"\t");21 }22 }23}2425classTestPrime{26 publicstaticvoidmain(Stringargs[]){27 Primep1=newPrime(Integer.parseInt(args[0]));28 p1.outputPrime();29 }30}該程序的第16行定義了一個(gè)語(yǔ)句標(biāo)號(hào)outer,第18行的功用是:當(dāng)i能被j整除時(shí),就跳出內(nèi)循環(huán),轉(zhuǎn)到由標(biāo)號(hào)outer標(biāo)識(shí)的外循環(huán),即執(zhí)行第16行所指的外循環(huán)語(yǔ)句。第20行的功用是:當(dāng)i不能被2到i-1之間的所有數(shù)整除時(shí),輸出素?cái)?shù)i。讀者可以對(duì)案例4-3所示的程序進(jìn)行優(yōu)化,以提高程序執(zhí)行的速度。4.3.3【相關(guān)知識(shí)】foreach循環(huán)在JDK6.5中新增了一個(gè)循環(huán)語(yǔ)句foreach,它可以用來(lái)簡(jiǎn)化某些循環(huán)語(yǔ)句的書(shū)寫(xiě)。如有下面的數(shù)組定義:float[]a={23.23f,34.9f,45.88f,45.556f,23.987f,23.0f,34.45f};要輸出所有數(shù)組元素值,可以使用下面的循環(huán)語(yǔ)句:for(inti=0;i<a.length;i++){System.out.println(a[i]);}對(duì)上面的程序段,在Java語(yǔ)言中還可以用下面的簡(jiǎn)單方式寫(xiě)出:for(floatk:a){ System.out.println(k);}這里的k會(huì)按序自動(dòng)取得數(shù)組a中的每個(gè)下標(biāo)元素。Java語(yǔ)言中將這種格式的for語(yǔ)句叫做foreach循環(huán),但要注意,只能在JDK5.0以上的版本中使用。技能拓展4.4使用Javadoc工具制作幫助文檔
Javadoc是一個(gè)用于從Java源代碼的注釋中自動(dòng)提取有關(guān)信息以生成HTML幫助文檔的工具。用Javadoc生成的幫助文檔與JDK幫助文檔的格式類(lèi)似。Javadoc作為Java軟件開(kāi)發(fā)包(SDK)的一個(gè)標(biāo)準(zhǔn)部分,與編譯器Javac.exe和解釋器Java.exe工具一樣,位于安裝目錄下的bin文件夾中。Javadoc.exe可執(zhí)行文件為開(kāi)發(fā)人員快速制作程序的幫助文檔提供了一種非常有效的手段。下面舉例說(shuō)明Javadoc制作幫助文檔的方法。4.4.1文檔注釋中使用的標(biāo)記
1.文檔注釋在第1章介紹過(guò),Java的注釋有3種方式,其中文檔注釋專(zhuān)門(mén)用于生成HTML格式的幫助文檔。文檔注釋用“/**……*/”表示,即注釋內(nèi)容要寫(xiě)入“/**”和“*/”之間。文檔注釋的內(nèi)容應(yīng)該放在類(lèi)、屬性、構(gòu)造方法、成員方法的前面,以解釋和說(shuō)明這些程序結(jié)構(gòu)。文檔注釋“/**……*/”可以跨行使用,但要求每一行要以“*”號(hào)開(kāi)始。在注釋的內(nèi)容中,還允許使用HTML語(yǔ)言中的標(biāo)記。例如,下面的注釋中使用了HTML的標(biāo)記<strong>:/***Thisisa<strong>example</strong>documentcomment.*/由于文檔注釋中內(nèi)容的第一句話(huà)會(huì)被Javadoc工具自動(dòng)放在所生成HTML文件的開(kāi)頭,并將其作為對(duì)注釋內(nèi)容的一個(gè)總結(jié),因此,該總結(jié)以*字符后的內(nèi)容為起點(diǎn),并結(jié)束于第一個(gè)句號(hào)之前。
2.文檔注釋中使用的標(biāo)記要使Javadoc工具正確理解用戶(hù)注釋的含義,可以在文檔注釋中使用一些Javadoc規(guī)定的標(biāo)記。這些標(biāo)記位于文檔注釋內(nèi),要求每個(gè)標(biāo)記要另起一行,以一個(gè)“*”字符開(kāi)始。表4-1是Javadoc工具常用的幾個(gè)標(biāo)記。表4-1幾個(gè)常用的Javadoc標(biāo)記4.4.2Javadoc應(yīng)用實(shí)例下面是一個(gè)使用Javadoc文檔生成器的實(shí)例:01/**02*Thisisa<strong>example</strong>documentcomment.03*@authorRentaiming04*@versionv1.005*/0607publicclassExampleDocComment{0809 /**10 *xx是一個(gè)公有成員屬性11 */12 publicintxx=0;13 1415 /**16 *ExampleDocComment是一個(gè)無(wú)參數(shù)的構(gòu)造方法17 */18 publicExampleDocComment(){19 }20 21 /**22 *setXx方法用來(lái)給屬性xx提供數(shù)值23 *@paramxx 參數(shù)xx是一個(gè)整型數(shù)值24 */25 publicvoidsetXx(intxx){26 this.xx=xx;27 }28 29 /**30 *getXx方法取得公有成員xx的數(shù)據(jù)31 *@returnxx返回整型數(shù)據(jù)32 */33 publicintgetXx(){34 returnxx;35 } 36}使用下列Javadoc命令生成幫助文檔:javadoc-version-authorExampleDocComment.java執(zhí)行該命令后,在源程序文件所在目錄中生成十幾個(gè)HTML格式的幫助文檔,點(diǎn)擊其中的index.html文件,則顯示類(lèi)似于圖4-7所示的幫助文檔窗口。該窗口與JDK幫助系統(tǒng)的風(fēng)格是一致的,使用起來(lái)很方便。圖4-7Javadoc工具生成的幫助文檔窗口注意,該程序所有的幫助都使用了文檔注釋的格式(/***/)。第02行的<strong>example</strong>將使example加粗顯示;第03行的@authorRentaiming將在幫助文檔中加上作者信息;第04行的@version將幫助文檔中加上版本信息,如圖4-7所示。每個(gè)成員變量前和每個(gè)方法前的文檔注釋將會(huì)被Javadoc工具自動(dòng)生成的幫助所使用。程序的第23行還使用了參數(shù)標(biāo)記@param,在第31行使用了返回值標(biāo)記@return,這樣生成的幫助文檔將對(duì)參數(shù)和返回值進(jìn)行說(shuō)明,如圖4-8所示。圖4-8幫助文檔中方法的詳細(xì)說(shuō)明
Javadoc也可使用下面的簡(jiǎn)單格式:
javadocExampleDocComment.java這時(shí)生成的幫助將忽略作者和版本信息。另外,Javadoc還提供了很多有用的標(biāo)記,具體情況可查看Javadoc的幫助。工程規(guī)范4.5Java程序的編寫(xiě)規(guī)則一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)中,每個(gè)人一般只負(fù)責(zé)所開(kāi)發(fā)系統(tǒng)中的某個(gè)部分,在軟件編碼的最后階段,要將這些部分集成起來(lái),構(gòu)建成一個(gè)最終的軟件產(chǎn)品。因此,為了便于軟件開(kāi)發(fā)成員之間互相協(xié)作、交流和軟件的集成,一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)一般都會(huì)制定一些編碼標(biāo)準(zhǔn)或軟件開(kāi)發(fā)規(guī)則,這些規(guī)則一般依據(jù)國(guó)家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)或軟件開(kāi)發(fā)工具的特點(diǎn)等制定。本節(jié)介紹一些使用Java語(yǔ)言開(kāi)發(fā)軟件時(shí)常用的軟件編寫(xiě)規(guī)則。4.5.1類(lèi)的設(shè)計(jì)規(guī)則下面是幾點(diǎn)基本的類(lèi)設(shè)計(jì)規(guī)則:●使用統(tǒng)一、一致的編碼風(fēng)格?!衩總€(gè)類(lèi)的前面要有對(duì)該類(lèi)的注釋?zhuān)弧裨诎琺ain的類(lèi)中,不要再設(shè)計(jì)其他的方法,即將main方法放在一個(gè)單獨(dú)的類(lèi)中;●要使用同一個(gè)包中的多個(gè)類(lèi)時(shí),盡量在import語(yǔ)句中使用“*”來(lái)代替多個(gè)類(lèi)名;●一般不要使用public修飾成員變量;●程序中其值不變的量,盡量使用final修飾符來(lái)聲明;●對(duì)于類(lèi)中定義的成員變量,用構(gòu)造方法進(jìn)行初始化;●類(lèi)中的成員屬性,使用setXXX和getXXX設(shè)置或獲取其值;●一個(gè)類(lèi)的不同方法之間、不同性質(zhì)的屬性之間、屬性與方法之間一般要空一行或兩行;●一個(gè)方法或?qū)傩缘淖⑨尫旁诰o接其代碼的前面;●盡可能細(xì)致地加上注釋?zhuān)⒂肑avadoc注釋文檔語(yǔ)法生成自己的程序文檔;●使類(lèi)盡可能短小精悍,而且只解決一個(gè)特定的問(wèn)題;●一個(gè)類(lèi)要提供盡可能少的公用方法;●源程序中,每行的字符要保持在80個(gè)以?xún)?nèi)。4.5.2方法的設(shè)計(jì)規(guī)則方法的主要設(shè)計(jì)規(guī)則是:●方法中盡量不要使用continue語(yǔ)句;●?break語(yǔ)句一般只使用在switch語(yǔ)句中;●每個(gè)方法體應(yīng)該都有return語(yǔ)句,返回值為void的方法,return語(yǔ)句后不能有返回值,并且要將return語(yǔ)句放在方法的最后一行;●盡量不要使用if語(yǔ)句的多層嵌套,例如;if(a>0)if(b>0)x=a*b;…可將if語(yǔ)句寫(xiě)為“if((a>0)&&(b>0)”格式。●將對(duì)外提供服務(wù)的方法用public修飾,支持類(lèi)中功能的方法用private修飾。另外,關(guān)于標(biāo)識(shí)符的命令規(guī)則和程序的書(shū)寫(xiě)規(guī)則已經(jīng)在前面的“工程規(guī)范”中介紹過(guò)。讀者在編寫(xiě)程序時(shí)應(yīng)盡量養(yǎng)成好的設(shè)計(jì)習(xí)慣,即遵守一般的編程規(guī)則。基礎(chǔ)練習(xí)【簡(jiǎn)答題】
4.1什么是方法?如何聲明方法?
4.2方法的調(diào)用有哪兩種格式?
4.3什么是方法重載?舉例說(shuō)明。
4.4final修飾符用在成員變量前和用在一個(gè)方法的局部變量前有沒(méi)有區(qū)別?
4.5舉例說(shuō)明當(dāng)參數(shù)是對(duì)象類(lèi)型時(shí)的傳遞過(guò)程。
4.6分支語(yǔ)句有哪幾種類(lèi)型?它們的格式如何?
4.7對(duì)于兩個(gè)實(shí)數(shù)要進(jìn)行的“==”比較,將如何處理?
4.8舉例說(shuō)明有些程序使用switch語(yǔ)句可以簡(jiǎn)化程序的編寫(xiě)。
4.9說(shuō)明for、while和do-while循環(huán)的格式,并對(duì)其進(jìn)行比較。
4.10舉例說(shuō)明foreach循環(huán)的使用方法。
4.11說(shuō)明使用Javadoc制作幫助文檔的優(yōu)點(diǎn)。
4.12根據(jù)你的理解,說(shuō)明你編寫(xiě)Java程序時(shí)要遵守的規(guī)則?!具x擇題】
4.13下列方法定義中,正確的是()。
A)intx(inta,b){return(a-b);}
B)doublex(inta,intb){intw;w=a-b;}
C)doublex(a,b){returnb;}
D)intx(inta,intb){returna-b;}
4.14下列方法定義中,正確的是()。
A)voidx(inta,intb);{return(a–b);}
B)x(inta,intb){returna-b;}
C)doublex{returnb;}
D)intx(inta,intb){returna+b;}
4.15下列方法定義中,不正確的是()。
A)floatx(inta,intb){return(a-b);}
B)intx(inta,intb){returna-b;}
C)intx(inta,intb);{returna*b;}
D)intx(inta,intb){return1.2*(a+b);}
4.16下列方法定義中,正確的是()。
A)intx(){charc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026年研究和試驗(yàn)開(kāi)展的核心技術(shù)概覽
- 2025智能硬件銷(xiāo)售合同協(xié)議書(shū)范文
- 2025維修工合同范本模板
- 2025所有權(quán)質(zhì)押合同協(xié)議書(shū)
- 2025年租賃土地使用合同
- 藥物化學(xué)探索之旅
- 英語(yǔ)全能進(jìn)階指南
- 應(yīng)對(duì)教育挑戰(zhàn)
- 2025年國(guó)家規(guī)定勞動(dòng)合同樣本
- 2025授權(quán)代理銷(xiāo)售合同模板
- 水利工程竣工自查報(bào)告
- 新疆維吾爾自治區(qū)新2024年中考數(shù)學(xué)模擬試卷附答案
- 2024年中國(guó)老年糖尿病診療指南解讀(2024年版)
- 震后學(xué)校維修合同書(shū)
- 李白:《將進(jìn)酒》經(jīng)典省公開(kāi)課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- 19S406建筑排水管道安裝-塑料管道
- 教師如何有效地與家長(zhǎng)溝通
- 第11課遼宋夏金元的經(jīng)濟(jì)社會(huì)與文化教學(xué)設(shè)計(jì)-高中歷史必修中外歷史綱要上冊(cè)2
- 如何與客戶(hù)建立有效的溝通
- 真空排水系統(tǒng)施工方案設(shè)計(jì)
- (完整版)建筑工程技術(shù)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論