




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.1編程語言的幾個(gè)發(fā)展階段
4.1.1面向機(jī)器語言4.1.2面向過程語言4.1.3面向?qū)ο笳Z言使用機(jī)器語言編程也稱作面向機(jī)器編程。20世紀(jì)50年代出現(xiàn)了匯編語言,在編寫指令時(shí),用一些簡(jiǎn)單的容易記憶的符號(hào)來代替二進(jìn)制指令,但匯編語言仍是面向機(jī)器語言,需針對(duì)不同的機(jī)器來編寫不同的代碼。語言把代碼組成叫做過程或函數(shù)的塊。每個(gè)塊的目標(biāo)是完成某個(gè)任務(wù),例如,一個(gè)C的源程序就是由若干個(gè)書寫形式互相獨(dú)立的函數(shù)組成。面向?qū)ο笳Z言中,最核心的內(nèi)容就是“對(duì)象”,一切圍繞著對(duì)象。1.封裝性面向?qū)ο缶幊毯诵乃枷胫痪褪菍?shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,形成一般的概念,比如類的概念。2.繼承繼承體現(xiàn)了一種先進(jìn)的編程模式。子類可以繼承父類的屬性和功能。3.多態(tài)多態(tài)是面向?qū)ο缶幊痰挠忠恢匾卣?,是編寫出易維護(hù),易擴(kuò)展程序的保障。4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題類的定義包括兩部分:類聲明和類體?;靖袷綖椋篶lass
類名
{
類體的內(nèi)容}class
是關(guān)鍵字,用來定義類?!癱lass類名”是類的聲明部分,類名必須是合法的Java標(biāo)識(shí)符。兩個(gè)大括號(hào)以及之間的內(nèi)容是類體。例如:classPeople
{…}class
動(dòng)物
{…}如果類名使用拉丁字母,那么名字的首字母使用大寫字母,如Hello,Time,Dog等。2.類名最好容易識(shí)別、見名知意。當(dāng)類名由幾個(gè)“單詞”復(fù)合而成時(shí),每個(gè)單詞的首字母使用大寫,如BeijingTime,AmericanGame,HelloChina等。4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題類的關(guān)鍵是抓住事物的兩個(gè)方面:屬性和行為,即數(shù)據(jù)以及在數(shù)據(jù)上所進(jìn)行的操作,因此類體的內(nèi)容由如下所述的兩部分構(gòu)成:class
梯形
{
float上底,下底,高,ladderArea;//變量聲明部分
float計(jì)算面積(){//方法定義
ladderArea=(上底+下底)*高/2.0f;
returnladderArea;
}
void修改高(floath){//方法定義
高=h;
}}變量的聲明:用來存儲(chǔ)屬性的值(體現(xiàn)對(duì)象的屬性)。方法的定義:方法可以對(duì)類中聲明的變量進(jìn)行操作,即給出算法(體現(xiàn)對(duì)象所具有的行為功能)。4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題類體分為兩部分:一部分是變量的聲明,變量聲明部分所聲明的變量被稱作類的成員變量。另一部分是方法的定義,在方法體中聲明的變量和方法的參數(shù)被稱作局部變量。成員變量在整個(gè)類內(nèi)都有效,局部變量只在聲明它的方法內(nèi)有效。方法參數(shù)在整個(gè)方法內(nèi)有效,方法內(nèi)的局部變量從聲明它的位置之后開始有效。成員變量的有效性(在各個(gè)方法內(nèi)有效)與它在類體中書寫的先后位置無關(guān)。例如,前述的梯形類也可以寫成:class梯形{float上底,ladderArea;//成員變量的定義
float計(jì)算面積(){ladderArea=(上底+下底)*高/2.0f;returnladderArea;}float下底;//成員變量的定義
void修改高(floath){//方法定義高=h;}float高;//成員變量的定義}4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題成員變量又分為實(shí)例變量和類變量。在聲明成員變量時(shí),用關(guān)鍵字static給予修飾的稱作類變量,否則稱作實(shí)例變量(類變量也稱為static變量,靜態(tài)變量),例如:classDog{
floatx;
//實(shí)例變量
staticinty;//類變量}如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,即這個(gè)成員變量在這個(gè)方法內(nèi)暫時(shí)失效。例如:classTom{
intx=98,y;
voidf(){
intx=3;//局部變量x和成員變量x名字相同
y=x;//y得到的值是3,不是98。如果方法f中沒有
“intx=3;”,y的值將是98
}}變量的名字除了符合標(biāo)識(shí)符規(guī)定外,名字的首單詞的首字母使用小寫;如果變量的名字由多個(gè)單詞組成,從第2個(gè)單詞開始的其它單詞的首字母使用大寫.4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題方法的定義包括兩部分:方法聲明和方法體。一般格式為:方法聲明部分
{
方法體的內(nèi)容}寫一個(gè)方法和C語言中寫一個(gè)函數(shù)完全類似,只不過在面向?qū)ο笳Z言中稱作方法,因此如果有比較好的C語言基礎(chǔ),編寫方法的方法體已不再是難點(diǎn)。例如:intgetSum(intn){intsum=0;//聲明局部變量
for(inti=1;i<=n;i++){//for循環(huán)語句
sum=sum+i;}returnsum;//return語句}方法起名字的習(xí)慣和給變量起名字的習(xí)慣類似,首寫字母使用小寫,如果名字由多個(gè)單詞組成,從第2個(gè)單詞開始的其它單詞的首寫字母使用大寫。4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題方法重載是多態(tài)性的一種,例如,你讓一個(gè)人執(zhí)行“求面積”操作時(shí),他可能會(huì)問你求什么面積?所謂功能多態(tài)性是指可以向功能傳遞不同的消息,以便讓對(duì)象根據(jù)相應(yīng)的消息來產(chǎn)生相應(yīng)的行為。對(duì)象的功能通過類中的方法來體現(xiàn),那么功能的多態(tài)性就是方法的重載。方法重載的意思是:一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是某個(gè)參數(shù)的類型不同。classArea{floatgetArea(floatr){return3.14f*r*r;}doublegetArea(floatx,inty){returnx*y;}floatgetArea(intx,floaty){returnx*y;}doublegetArea(floatx,floaty,floatz){return(x*x+y*y+z*z)*2.0;}}Area類中g(shù)etArea方法是一個(gè)重載方法:4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型,構(gòu)造方法也可以重載。例如:class梯形{float上底,下底,高;
梯形(){//構(gòu)造方法上底=60;
下底=100;
高=20;}
梯形(floatx,inty,floath){//構(gòu)造方法上底=x;
下底=y;
高=h;}}4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題類中的方法(非構(gòu)造方法)可分為實(shí)例方法和類方法。方法聲明時(shí),方法類型前面不加關(guān)鍵字static修飾的是實(shí)例方法、加static修飾的是類方法(靜態(tài)方法):classA{inta;floatmax(floatx,floaty){//實(shí)例方法
…}
staticfloatjerry(){//類方法
…}
staticvoidspeak(Strings){//類方法
…}}4.2類
4.2.1類聲明4.2.2類體4.2.3成員變量和局部變量4.2.4方法4.2.5方法重載4.2.6構(gòu)造方法4.2.7類方法和實(shí)例方法4.2.8兩個(gè)值得注意的問題1.對(duì)成員變量的操作只能放在方法中,方法可以對(duì)成員變量和該方法體中聲明的局部變量進(jìn)行操作。在聲明類的成員變量時(shí)可以同時(shí)賦予初值,如:classA{inta=12;floatb=12.56f;}classA{inta;floatb;
a=12;//非法,這是賦值語句(語句只能出現(xiàn)方法體中),不是變量的聲明
b=12.56f;//非法}2.實(shí)例方法既能對(duì)類變量操作也能對(duì)實(shí)例變量操作,而類方法只能對(duì)類變量進(jìn)行操作。實(shí)例方法可以調(diào)用該類中的實(shí)例或類方法;類中的類方法只能調(diào)用該類的類方法,不能調(diào)用實(shí)例方法但是不可以這樣做:4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體類是面向?qū)ο笳Z言中最重要的一種數(shù)據(jù)類型,可以用類來聲明變量。在面向?qū)ο笳Z言中,用類聲明的變量被稱為對(duì)象構(gòu)造方法是類中的一種特殊方法(見4.2.6,其名字和類名相同且沒有類型),當(dāng)程序用類創(chuàng)建對(duì)象時(shí)需使用它的構(gòu)造方法。1.默認(rèn)的構(gòu)造方法
如果類中沒有編寫構(gòu)造方法,系統(tǒng)會(huì)默認(rèn)該類只有一個(gè)構(gòu)造方法,該默認(rèn)的構(gòu)造方法是無參數(shù)的,且方法體中沒有語句。2.自定義構(gòu)造方法如果定義了一個(gè)或多個(gè)構(gòu)造方法,那么Java不提供默認(rèn)的構(gòu)造方法,例如,下列Point類有兩個(gè)構(gòu)造方法。classPoint{Point(){}Point(inta,intb){}}4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體3.構(gòu)造方法沒有類型需要特別注意的是,構(gòu)造方法沒有類型,下列Point類中只有一個(gè)構(gòu)造方法,其中的voidPoint(inta,intb)和intPoint()都不是構(gòu)造方法。classPoint{intx,y;Point(){//是構(gòu)造方法
x=1;y=1;}voidPoint(inta,intb){//不是構(gòu)造方法(該方法的類型是void)
x=a;y=b;}intPoint(){//不是構(gòu)造方法(該方法的類型是int)
return12;}}4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體1.對(duì)象的聲明一般格式為:類的名字對(duì)象名字;如:
Pointp;創(chuàng)建一個(gè)對(duì)象包括對(duì)象的聲明和為對(duì)象分配變量?jī)蓚€(gè)步驟。2.為聲明的對(duì)象分配變量使用new運(yùn)算符和類的構(gòu)造方法為聲明的對(duì)象分配變量,即創(chuàng)建對(duì)象。如果類中沒有構(gòu)造方法,系統(tǒng)會(huì)調(diào)用默認(rèn)的構(gòu)造方法,默認(rèn)的構(gòu)造方法是無參數(shù)的,且方法體中沒有語句。簡(jiǎn)單的例子1。例子1classXiyoujiRenwu{floatheight,weight;Stringhead,ear;voidspeak(Strings){System.out.println(s);}}publicclassExample4_1{publicstaticvoidmain(Stringargs[]){
XiyoujiRenwuzhubajie,sunwukong;//聲明對(duì)象
zhubajie=newXiyoujiRenwu();//為對(duì)象分配變量
sunwukong=newXiyoujiRenwu();}}4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體3.對(duì)象的內(nèi)存模型用XiyoujiRenwu類聲明一個(gè)變量zhubajie,即對(duì)象zhubajie時(shí)(如例子1)XiyoujiRenwuzhubajie;內(nèi)存模型如圖所示。zhubajie的內(nèi)存中還沒有任何數(shù)據(jù),稱這時(shí)的zhubajie是一個(gè)空對(duì)象。4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體3.對(duì)象的內(nèi)存模型
newXiyoujiRenwu()就會(huì)做下列兩件事。(1)為height,weight,head,ear各個(gè)變量分配內(nèi)存并初始化這些變量的值,然后執(zhí)行構(gòu)造方法中的語句。(2)計(jì)算出一個(gè)稱作引用的值(該值包含著這些成員變量?jī)?nèi)存位置及相關(guān)的重要信息),即表達(dá)式
newXiyoujiRenwu()
是一個(gè)值。如果把該引用賦值給zhubajie:zhubajie=newXiyoujiRenwu();那么Java系統(tǒng)分配的height,weight,head,ear的內(nèi)存單元將由zhubajie操作管理,稱height,weight,head,ear是屬于對(duì)象zhubajie的實(shí)體,即這些變量是屬于zhubajie的。所謂創(chuàng)建對(duì)象就是指為對(duì)象分配變量,并獲得一個(gè)引用,以確保這些變量由該對(duì)象來操作管理。分配變量后的對(duì)象的內(nèi)存模型如圖所示。當(dāng)使用一個(gè)類創(chuàng)建一個(gè)對(duì)象時(shí),也稱給出了這個(gè)類的一個(gè)實(shí)例。4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體3.對(duì)象的內(nèi)存模型使用new運(yùn)算符可以創(chuàng)建多個(gè)不同的對(duì)象,這些對(duì)象的變量將被分配不同的內(nèi)存空間。創(chuàng)建對(duì)象zhubajie時(shí),XiyoujiRenwu類中的成員變量height,weight,head,ear被分配內(nèi)存空間,并返回一個(gè)引用給zhubajie;當(dāng)再創(chuàng)建一個(gè)對(duì)象sunwukong時(shí),XiyoujiRenwu類中的成員變量height,weight,head,ear再一次被分配內(nèi)存空間,并返回一個(gè)引用給sunwukong。sunwukong的變量所占據(jù)的內(nèi)存空間和zhubajie的變量所占據(jù)的內(nèi)存空間是互不相同的位置。內(nèi)存模型如圖所示。zhubajie=newXiyoujiRenwu();sunwukong=newXiyoujiRenwu();4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體1.對(duì)象操作自己的變量(體現(xiàn)對(duì)象的屬性)對(duì)象創(chuàng)建之后,就有了自己的變量,即對(duì)象的實(shí)體。對(duì)象通過使用點(diǎn)運(yùn)算符“.”(點(diǎn)運(yùn)算符也稱引用運(yùn)算符或訪問運(yùn)算符)訪問自己的變量,訪問格式為:
對(duì)象.變量;
2.對(duì)象調(diào)用類中的方法(體現(xiàn)對(duì)象的行為)對(duì)象創(chuàng)建之后,可以使用點(diǎn)運(yùn)算符“.”調(diào)用創(chuàng)建它的類中的方法,從而產(chǎn)生一定的行為(功能),調(diào)用格式為:
對(duì)象.方法;3.體現(xiàn)封裝當(dāng)對(duì)象調(diào)用方法時(shí),方法中出現(xiàn)的成員變量就是指分配給該對(duì)象的變量。在講述類的時(shí)候講過:類中的方法可以操作成員變量。當(dāng)對(duì)象調(diào)用方法時(shí),方法中出現(xiàn)的成員變量就是指分配給該對(duì)象的變量。對(duì)象調(diào)用方法時(shí),方法中的局部變量被分配內(nèi)存空間。方法執(zhí)行完畢,局部變量即刻釋放內(nèi)存。局部變量沒有默認(rèn)值,因此在使用局部變量之前,要保證該局部變量有值。4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體對(duì)于初學(xué)者,首先需要掌握在主類的main方法中使用類來創(chuàng)建對(duì)象,并讓創(chuàng)建的對(duì)象產(chǎn)生行為。在例子2中,在主類的main方法中使用Xiyoujirenwu類創(chuàng)建了兩個(gè)對(duì)象:zhubajie、sunwukong,并各自產(chǎn)生了行為。需要三次打開文本編輯器分別編輯、保存:PersonName.java,Xiyoujirenwu.java和Example4_2.java,比如,保存在C:\chapter4目錄中,然后分別編譯,最后運(yùn)行主類即可,運(yùn)行效果如圖。例子2PersonName.javaXiyoujiRenwu.javaExample4_2.java當(dāng)對(duì)象調(diào)用該方法時(shí),方法中出現(xiàn)的成員變量就是指該對(duì)象的成員變量。在例子2中,當(dāng)對(duì)象zhubajie調(diào)用過方法speak之后,就將自己的head修改成:“美男頭”;同樣,對(duì)象sunwukong調(diào)用過方法speak之后,也就將自己的head修改成:“美女頭”。4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體類是體現(xiàn)封裝的一種數(shù)據(jù)類型(封裝著數(shù)據(jù)和對(duì)數(shù)據(jù)的操作),類所聲明的變量被稱為對(duì)象,對(duì)象(變量)負(fù)責(zé)存放引用,以確保對(duì)象可以操作分配給該對(duì)象的變量以及調(diào)用類中的方法。分配給對(duì)象的變量被習(xí)慣地稱作對(duì)象的實(shí)體。1.避免使用空對(duì)象如果對(duì)象中沒有存放一個(gè)引用值,這樣的對(duì)象就是空對(duì)象。空對(duì)象沒有屬于自己的變量,因此避免讓空對(duì)象去訪問變量和調(diào)用方法。Java編譯器對(duì)空對(duì)象不做檢查,但空對(duì)象去訪問變量和調(diào)用方法,運(yùn)行時(shí)會(huì)觸發(fā)java.lang.NullPointerException異常。2.重要結(jié)論一個(gè)類聲明的兩個(gè)對(duì)象,一旦二者具有相同的引用,二者就具有完全相同的變量(實(shí)體)。4.3對(duì)象
4.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體對(duì)于下列Point類:classPoint{intx,y;Point(inta,intb){x=a;y=b;}}如果創(chuàng)建2個(gè)對(duì)象:Pointp1=newPoint(5,15);Pointp2=newPoint(8,18);p1和p2的引用不同假如在程序中使用了如下的賦值語句:p1=p2;p1和p2的引用相同把p2中的引用賦給了p1,因此p1和p2本質(zhì)上是一樣的了。雖然在源程序中p1和p2是兩個(gè)名字,但在系統(tǒng)看來它們的名字是一個(gè):0x999,系統(tǒng)將取消原來分配給p1的變量(如果這些變量沒有其他對(duì)象繼續(xù)引用)。這時(shí)如果輸出p1.x的結(jié)果將是8,而不是5,即p1和p2有相同的變量(實(shí)體)。例子34.3.1構(gòu)造方法4.3.2創(chuàng)建對(duì)象4.3.3使用對(duì)象4.3.4對(duì)象的引用和實(shí)體例子3將對(duì)象p2的引用賦給了對(duì)象p1,運(yùn)行效果如圖。例子34.4參數(shù)傳值
4.4.1基本數(shù)據(jù)類型參數(shù)的傳值4.4.2引用類型參數(shù)的傳值4.4.3可變參數(shù)4.4.4有理數(shù)的類封裝方法被調(diào)用時(shí),如果方法有參數(shù),參數(shù)必須要實(shí)例化,即參數(shù)變量必須有具體的值。在Java中,方法的所有參數(shù)都是“傳值”的,也就是說,方法中參數(shù)變量的值是調(diào)用者指定的值的拷貝。對(duì)于基本數(shù)據(jù)類型的參數(shù),向該參數(shù)傳遞的值的級(jí)別不可以高于該參數(shù)的級(jí)別,比如,不可以向int型參數(shù)傳遞一個(gè)float值,但可以向double型參數(shù)傳遞一個(gè)float值Example4_4.java是含有主類的應(yīng)用程序。在主類的main方法中使用Rect類來創(chuàng)建矩形對(duì)象,該矩形對(duì)象可以調(diào)用setWidth(doublewidth)設(shè)置自己的寬,調(diào)用setHeight(doubleheight)設(shè)置自己的高,因此,矩形對(duì)象在調(diào)用setWidth(doublewidth)或setHeight(doubleheight)方法時(shí),必須向方法的參數(shù)傳遞值。程序運(yùn)行效果如圖。例子4Rect.javaExample4_4.java4.4參數(shù)傳值
4.4.1基本數(shù)據(jù)類型參數(shù)的傳值4.4.2引用類型參數(shù)的傳值4.4.3可變參數(shù)4.4.4有理數(shù)的類封裝Java的引用型數(shù)據(jù)包括前面剛剛學(xué)習(xí)的對(duì)象、第2章學(xué)習(xí)的數(shù)組以及后面將要學(xué)習(xí)的接口。當(dāng)參數(shù)是引用類型時(shí),“傳值”傳遞的是變量中存放的“引用”,而不是變量所引用的實(shí)體。對(duì)于兩個(gè)同類型的引用型變量,如果具有同樣的引用,就會(huì)用同樣的實(shí)體,因此,如果改變參數(shù)變量所引用的實(shí)體,就會(huì)導(dǎo)致原變量的實(shí)體發(fā)生同樣的變化;但是,改變參數(shù)中存放的“引用”不會(huì)影響向其傳值的變量中存放的“引用”,反之亦然。例子5Example4_5.java是主類。在主類的main方法中首先使用Circlet類創(chuàng)建一個(gè)“圓”對(duì)象:circle,然后使用Circular類再創(chuàng)建一個(gè)“圓錐”對(duì)象,并將先前Circle類的實(shí)例:circle,即“圓”對(duì)象的引用傳遞給圓錐對(duì)象的成員變量bottom。程序運(yùn)行效果如圖。Circle.javaCircular.javaExample4_5.java4.4參數(shù)傳值
4.4.1基本數(shù)據(jù)類型參數(shù)的傳值4.4.2引用類型參數(shù)的傳值4.4.3可變參數(shù)4.4.4有理數(shù)的類封裝可變參數(shù)是指在聲明方法時(shí)不給出參數(shù)列表中從某項(xiàng)直至最后一項(xiàng)參數(shù)的名字和個(gè)數(shù),但這些參數(shù)的類型必須相同??勺儏?shù)使用“…”表示若干個(gè)參數(shù),這些參數(shù)的類型必須相同,最后一個(gè)參數(shù)必須是參數(shù)列表中的最后一個(gè)參數(shù)。比如:publicvoidg(doublea,int...x)那么,方法g的參數(shù)列表中,第一個(gè)參數(shù)是double型,第二個(gè)至最后一個(gè)參數(shù)是int型,但連續(xù)出現(xiàn)的int型參數(shù)的個(gè)數(shù)不確定。稱x是方法g的參數(shù)列表中的可變參數(shù)的“參數(shù)代表”參數(shù)代表可以通過下標(biāo)運(yùn)算來表示參數(shù)列表中的具體參數(shù),即x[0],x[1]…x[m]分別表示x代表的第1個(gè)至第m個(gè)參數(shù)。例子6中,有兩個(gè)Java源文件Computer.java和Example2_6.java,其中Computer類的方法getResult()方法使用了參數(shù)代表,可以計(jì)算若干個(gè)整數(shù)的平均數(shù),運(yùn)行效果如圖。例子6Computer.javaExample4_6.java4.4參數(shù)傳值
4.4.1基本數(shù)據(jù)類型參數(shù)的傳值4.4.2引用類型參數(shù)的傳值4.4.3可變參數(shù)4.4.4有理數(shù)的類封裝分?jǐn)?shù)也稱作有理數(shù),是我們很熟悉的一種數(shù)。有時(shí)希望程序能對(duì)分?jǐn)?shù)進(jìn)行四則運(yùn)算,而且兩個(gè)分?jǐn)?shù)四則運(yùn)算的結(jié)果仍然是分?jǐn)?shù)(不希望看到1/6+1/6的結(jié)果是小數(shù)的近似值0.333而是1/3)。有理數(shù)Rational.javaMainClass.java用類實(shí)現(xiàn)對(duì)有理數(shù)的封裝。有理數(shù)有兩個(gè)重要的成員:分子和分母,另外還有重要的四則運(yùn)算。Rational(有理數(shù))類應(yīng)當(dāng)具有如下屬性(成員變量)和功能(方法)。Rational類有2個(gè)int型的成員變量,比如,名字分別為numerator(分子)和denominator(分母)。提供Rationaladd(Rationalr)方法,即有理數(shù)調(diào)用該方法和參數(shù)指定的有理數(shù)做加法運(yùn)算,并返回一個(gè)Rational對(duì)象。提供Rationalsub(Rationalr)方法,即有理數(shù)調(diào)用該方法和參數(shù)指定的有理數(shù)做減法運(yùn)算,并返回一個(gè)Rational對(duì)象。提供Rationalmuti(Rationalr)方法,即有理數(shù)調(diào)用該方法和參數(shù)指定的有理數(shù)做乘法運(yùn)算,并返回一個(gè)Rational對(duì)象。提供Rationaldiv(Rationalr)方法,即有理數(shù)調(diào)用該方法和參數(shù)指定的有理數(shù)做除法運(yùn)算,并返回一個(gè)Rational對(duì)象。4.5對(duì)象的組合
一個(gè)類的成員變量可以是Java允許的任何數(shù)據(jù)類型,因此,一個(gè)類可以把對(duì)象作為自己的成員變量,如果用這樣的類創(chuàng)建對(duì)象,該對(duì)象就將其他對(duì)象作為自己的組成部分(這就是人們常說的Has-A,例如,前面4.3節(jié)中的例子5中的圓錐對(duì)象就將一個(gè)圓對(duì)象作為自己的成員,即圓錐有一個(gè)圓底)。例子7中,一共編寫了4個(gè)類,分成4個(gè)源文件Rectangle.java、Circle.java、Geometry.java和Example4_7.java,需要將這4個(gè)源文件分別編輯,并保存在相同的目錄中,比如C:\chapter4中。Geometry類有Rectangle類型和Circle類型的成員變量,名字分別為rect和circle,也就是說Geometry類創(chuàng)建的對(duì)象(幾何圖形)是由一個(gè)Rectangle對(duì)象和一個(gè)Circle對(duì)象組合而成(如右圖所示意)。Rectangle.javaCircle.javaGeometry.javaExample4_7.java例子74.6static關(guān)鍵字
4.6.1實(shí)例變量和類變量的區(qū)別4.6.2實(shí)例方法和類方法的區(qū)別類的字節(jié)碼文件被加載到內(nèi)存,如果該類沒有創(chuàng)建對(duì)象,類中的實(shí)例變量不會(huì)被分配內(nèi)存。但是,類中的類變量,在該類被加載到內(nèi)存時(shí),就分配了相應(yīng)的內(nèi)存空間。如果該類創(chuàng)建對(duì)象,那么不同對(duì)象的實(shí)例變量互不相同,即分配不同的內(nèi)存空間,而類變量不再重新分配內(nèi)存,所有的對(duì)象共享類變量,即所有的對(duì)象的類變量是相同的一處內(nèi)存空間,類變量的內(nèi)存空間直到程序退出運(yùn)行,才釋放所占有的內(nèi)存。類變量是與類相關(guān)聯(lián)的數(shù)據(jù)變量,也就是說,類變量是和該類創(chuàng)建的所有對(duì)象相關(guān)聯(lián)的變量,改變其中一個(gè)對(duì)象的這個(gè)類變量就同時(shí)改變了其它對(duì)象的這個(gè)類變量。因此,類變量不僅可以通過某個(gè)對(duì)象訪問,也可以直接通過類名訪問。實(shí)例變量?jī)H僅是和相應(yīng)的對(duì)象關(guān)聯(lián)的變量,也就是說,不同對(duì)象的實(shí)例變量互不相同,即分配不同的內(nèi)存空間,改變其中一個(gè)對(duì)象的實(shí)例變量不會(huì)影響其它對(duì)象的這個(gè)實(shí)例變量。實(shí)例變量可以通過對(duì)象訪問,不能使用類名訪問。例子8中的Lader.java中的Ladder類創(chuàng)建的梯形對(duì)象共享一個(gè)下底。例子8Ladder.javaExample4_8.java4.6static關(guān)鍵字
4.6.1實(shí)例變量和類變量的區(qū)別4.6.2實(shí)例方法和類方法的區(qū)別類創(chuàng)建對(duì)象后,類中的實(shí)例方法才分配入口地址,從而實(shí)例方法可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行。創(chuàng)建第一個(gè)對(duì)象時(shí),類中的實(shí)例方法就分配了入口地址,當(dāng)再創(chuàng)建對(duì)象時(shí),不再分配入口地址,也就是說,方法的入口地址被所有的對(duì)象共享。對(duì)于類中的類方法,在該類被加載到內(nèi)存時(shí),就分配了相應(yīng)的入口地址。從而類方法不僅可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用。實(shí)例方法不能通過類名調(diào)用.例子9中,A類中的getContinueSum方法是類方法。例子9如果一個(gè)方法不需要操作實(shí)例成員變量就可以實(shí)現(xiàn)某種功能,就可以考慮將這樣的方法聲明為類方法。這樣做的好處是,避免創(chuàng)建對(duì)象浪費(fèi)內(nèi)存。實(shí)例方法既能對(duì)類變量操作也能對(duì)實(shí)例變量操作,而類方法只能對(duì)類變量進(jìn)行操作。4.7this關(guān)鍵字4.7.1在構(gòu)造方法中使用this4.7.2在實(shí)例方法中使用thisthis是Java的一個(gè)關(guān)鍵字,表示某個(gè)對(duì)象。this可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。實(shí)例方法必須只能通過對(duì)象來調(diào)用,不能用類名來調(diào)用。當(dāng)this出現(xiàn)實(shí)例方法中時(shí),代表正在調(diào)用該方法的當(dāng)前對(duì)象。實(shí)例方法可以操作類的成員變量,當(dāng)實(shí)例成員變量在實(shí)例方法中出現(xiàn)時(shí),默認(rèn)的格式是:this.成員變量編寫代碼時(shí)可以省略this。I但是,當(dāng)實(shí)例成員變量的名字和局部變量的名字相同時(shí),成員變量前面的“this.”就不可以省略。例子10中,People類的構(gòu)造方法中使用了this。例子10this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時(shí),代表使用該構(gòu)造方法所創(chuàng)建的對(duì)象。4.8包
4.8.1包語句4.8.2有包名的類的存儲(chǔ)目錄4.8.3運(yùn)行有包名的主類包是Java語言中有效地管理類的一個(gè)機(jī)制。不同Java源文件中可能出現(xiàn)名字相同的類,如果想?yún)^(qū)分這些類,就需要使用包名。包名的目的是有效的區(qū)分名字相同的類,不同Java源文件中兩個(gè)類名字相同時(shí),它們可以通過隸屬不同的包來相互區(qū)分。package語句作為Java源文件的第一條語句,指明該源文件定義的類所在的包,即為該源文件中聲明的類指定包名。package語句的一般格式為:
package包名;如果源程序中省略了package語句,源文件中所定義命名的類被隱含地認(rèn)為是無名包的一部分,只要這些類的字節(jié)碼被存放在相同的目錄中,那么它們就屬于同一個(gè)包,但沒有包名。包名可以是一個(gè)合法的標(biāo)識(shí)符,也可以是若干個(gè)標(biāo)識(shí)符加“.”分割而成,如:packagesunrise;package;一個(gè)源文件至多寫一條包語句4.8包
4.8.1包語句4.8.2有包名的類的存儲(chǔ)目錄4.8.3運(yùn)行有包名的主類假設(shè)程序如下使用了包語句:packagetom.jiafei;那么類的字節(jié)碼文件需要保存在某個(gè)形如
…\tom\jiafei的路徑中,比如,保存在:
C:\1000\tom\jiafei路徑中。為了讓類的字節(jié)碼文件保存在符合規(guī)定的路徑中,一個(gè)簡(jiǎn)單的辦法就是把類的源文件,保存到含有包名對(duì)應(yīng)的路徑中,比如,把源文件保存到:C:\1000\tom\jiafei路徑中。然后在命令行進(jìn)入包名對(duì)應(yīng)的路徑tom\jiafei的父目錄(例如C:\1000),如下編譯源文件:C:\1000>javactom\jiafei\源文件那么得到的字節(jié)碼文件默認(rèn)地保存在了當(dāng)前路徑中。
對(duì)于有包名的源文件,一個(gè)好的編程習(xí)慣就是進(jìn)入包名對(duì)應(yīng)的路徑的父目錄,編譯源文件。4.8包
4.8.1包語句4.8.2有包名的類的存儲(chǔ)目錄4.8.3運(yùn)行有包名的主類如果主類的包名是tom.jiafei,那么主類的字節(jié)碼必須存放在某個(gè)…\tom\jiefei路徑中,那么必須到tom\jiafei的父目錄(包名對(duì)應(yīng)的路徑的父目錄)中去運(yùn)行主類。假設(shè)tom\jiafei的父目錄是C:\1000,那么,在命令行如下格式來運(yùn)行:C:\1000>javatom.jiafei.主類名即運(yùn)行時(shí),必須寫主類的全名。因?yàn)槭褂昧税?,主類的全名是:包?主類名(就好比大連的全名是:中國(guó).遼寧.大連)。
例子11中的Example4_11.java使用包語句比如,可以保存例子11的源文件到c:\ch4\tom\jiafei中,分別編譯兩個(gè)源文件:C:\ch4>
javactom\jiafei\Student.javaC:\ch4>
javactom\jiafei\Example4_1.java也可以用統(tǒng)配符*代替全部源文件的名字,編譯全部的源文件:C:\ch4>javactom\jiafei\*.java到tom\jiafei的父目錄ch4中運(yùn)行:C:\ch4>javatom.jiafei.Example4_11例子11Student.javaExample4_11.java4.9import語句4.9.1引入類庫中的類4.9.2引入自定義包中的類4.9.3使用無包名的類一個(gè)類可能需要另一個(gè)類聲明的對(duì)象作為自己的成員或方法中的局部變量,如果這兩個(gè)類在同一個(gè)包中,當(dāng)然沒有問題。但是,如果一個(gè)類想要使用的那個(gè)類和它不在一個(gè)包中,就需要學(xué)習(xí)import語句。如果要引入一個(gè)包中的全部類,則可以用統(tǒng)配符號(hào):星號(hào)(*)來代替,如:
importjava.util.*;表示引入java.util包中所有的類,而importjava.until.Date;只是引入java.until包中的Date類。
在一個(gè)Java源程序中可以有多個(gè)import語句,它們必須寫在package語句(假如有package語句的話)和源文件中類的定義之間。Java類庫大約為我們提供了大約130多個(gè)包(在后續(xù)的章節(jié)我們將需要一些重要包中的類)。想使用java.util中的Date類創(chuàng)建對(duì)象來顯示本地的時(shí)間,那么就可以使用import語句引入java.util中的Date類。例子12中的Example4_12.java使用了import語句,運(yùn)行效果如圖。例子124.9import語句4.9.1引入類庫中的類4.9.2引入自定義包中的類4.9.3使用無包名的類用戶程序也可以使用import語句引入非類庫中有包名的類,如:importtom.jiafei.*;1.有包名的源文件包名路徑左對(duì)齊。所謂包名路徑左對(duì)齊,就是讓源文件中的包名所對(duì)應(yīng)的路徑和它要用import語句引入的非類庫中的類的包名所對(duì)應(yīng)的路徑的父目錄相同。2.無包名的源文件包名路徑和源文件左對(duì)齊。假如用戶的源文件沒有包名,該源文件想引入的非類庫中包名是的類。那么只需將源文件中import語句要引入的非類庫中的類的包名路徑的父目錄和用戶的源文件所在的目錄相同,即包名路徑和源文件左對(duì)齊。4.9import語句4.9.1引入類庫中的類4.9.2引入自定義包中的類4.9.3使用無包名的類例子13中的Triangle.java含有一個(gè)包名是的Triangle類,該類可以創(chuàng)建“三角形”對(duì)象。一個(gè)需要三角形的用戶,可以使用import語句引入Triangle類。比如,將Triangle.java源文件保存到C:\ch4\sohu\com中,并編譯通過:C:\ch4>javacsohu\com\Triangle.java例子14中的Example4_14.java中的主類(包名是sun.hello.moon)使用import語句引如包中的Triangle類。Example4_14.java保存在C:\ch4\sun\hello\moon中(因?yàn)閏h4下有tom\jiafei,即左對(duì)齊)例子13例子14注有包名的源文件,無論如何也無法使用無包名的類。4.9import語句4.9.1引入類庫中的類4.9.2引入自定義包中的類4.9.3使用無包名的類如果一個(gè)無包名類想使用無名包中的類,只要將這個(gè)無包名的類的字節(jié)麻和當(dāng)前類保存在同一目錄中即可。例子15涉及到兩個(gè)源文件,A.java和Example4_11.java。A.java省略了包語句,Example4_11.java和A.java存放在同一目錄。首先編譯A.java,然后編譯、運(yùn)行Example4_15.java例子15A.javaExample4_15.java4.10訪問權(quán)限
4.10.1私有變量和私有方法4.10.2共有變量和共有方法4.10.3友好變量和友好方法4.10.4受保護(hù)的成員變量和方法4.10.5public類與友好類用一個(gè)類創(chuàng)建了一個(gè)對(duì)象之后,該對(duì)象可以通過“.”運(yùn)算符操作自己的變量、使用類中的方法,但對(duì)象操作自己的變量和使用類中的方法是有一定限制的。所謂訪問權(quán)限是指對(duì)象是否可以通過“.”運(yùn)算符操作自己的變量或通過“.”運(yùn)算符使用類中的方法。訪問限制修飾符有private、protected和public,都是Java的關(guān)鍵字,用來修飾成員變量或方法。注:一個(gè)類中的實(shí)例方法總是可以操作該類中的實(shí)例變量和類變量;類方法總是可以操作該類中的類變量,與訪問限制符沒有關(guān)系。4.10訪問權(quán)限
4.10.1私有變量和私有方法4.10.2共有變量和共有方法4.10.3友好變量和友好方法4.10.4受保護(hù)的成員變量和方法4.10.5public類與友好類用關(guān)鍵字private修飾的成員變量和方法稱為私有變量和私有方法.對(duì)于類的私有成員變量或方法,只有在本類中創(chuàng)建該類的對(duì)象時(shí),這個(gè)對(duì)象才能訪問自己的私有成員變量和類中的私有方法。例子16當(dāng)我們用某個(gè)類在另外一個(gè)類中創(chuàng)建對(duì)象后,如果不希該對(duì)象直接訪問自己的變量,即通過“.”運(yùn)算符來操作自己的成員變量,就應(yīng)當(dāng)將該成員變量訪問權(quán)限設(shè)置為private。類應(yīng)當(dāng)提供操作數(shù)據(jù)的方法,這些方法可以經(jīng)過精心的設(shè)計(jì),使得對(duì)數(shù)據(jù)的操作更加合理,如下面的例子17所示意。例子17Student.javaExample4_17.java4.10訪問權(quán)限
4.10.1私有變量和私有方法4.10.2共有變量和共有方法4.10.3友好變量和友好方法4.10.4受保護(hù)的成員變量和方法4.10.5public類與友好類用public修飾的成員變量和方法被稱為共有變量和共有方法.當(dāng)前類在任何一個(gè)類中創(chuàng)建了一個(gè)對(duì)象后,該對(duì)象能訪問自己的public變量和public方法。不用private、public、protected修飾符的成員變量和方法被稱為友好變量和友好方法。當(dāng)前類在另外一個(gè)類中創(chuàng)建對(duì)象后,如果這個(gè)類與當(dāng)前類在同一個(gè)包中,那么該對(duì)象能訪問自己的友好變量和友好方法。用protected修飾的成員變量和方法被稱為受保護(hù)的成員變量和受保護(hù)的方法當(dāng)前類在另外一個(gè)類中創(chuàng)建對(duì)象后,如果這個(gè)類與當(dāng)前類在同一個(gè)包中,那么該對(duì)象能訪問自己的protected變量和protected方法。在后面講述子類時(shí),將講述“受保護(hù)(protected)”和“友好”之間的區(qū)別。4.10訪問權(quán)限
4.10.1私有變量和私有方法4.10.2共有變量和共有方法4.10.3友好變量和友好方法4.10.4受保護(hù)的成員變量和方法4.10.5public類與友好類類聲明時(shí),如果在關(guān)鍵字class前面加上public關(guān)鍵字,就稱這樣的類是一個(gè)public類,如:publicclassA{…}可以在任何另外一個(gè)類中,使用public類創(chuàng)建對(duì)象。如果一個(gè)類不加public修飾,如:classA{…}這樣的類被稱作友好類,那么另外一個(gè)類中使用友好類創(chuàng)建對(duì)象時(shí),要保證它們是在同一包中。注:①不能用protected和private修飾類(不包括后面講的內(nèi)部類Innerclass)。②訪問限制修飾符按訪問權(quán)限從高到低的排列順序是:public、protected、友好的、private。4.11基本類型的類包裝
4.11.1Double和Float類4.11.2Byte、Short、Integer、Long類4.11.3Character類4.11.4自動(dòng)裝箱與拆箱提供了基本數(shù)據(jù)類型相關(guān)的類,這些類在java.lang包中,分別是:Byte、Integer、Short、Long、Float、Double和Character類.可以使用Double類的構(gòu)造方法:
Double(doublenum)創(chuàng)建一個(gè)Double類型的對(duì)象;使用Float類的構(gòu)造方法:Float(floatnum)創(chuàng)建一個(gè)Float類型的對(duì)象。Double對(duì)象調(diào)用doubleValue()方法可以返回該對(duì)象含有的double型數(shù)據(jù);Float對(duì)象調(diào)用floatValue()方法可以返回該對(duì)象含有的float型數(shù)據(jù).下述構(gòu)造方法可以創(chuàng)建Byte、Integer、Short和Long類型的對(duì)象:Byte(bytenum)Short(shortnum)Integer(intnum)Long(longnum)
Byte、Short、Integer和Long對(duì)象分別調(diào)用byteValue()、shortValue()、intValue()和longValue()方法返回對(duì)象含有的基本型數(shù)據(jù)。使用Character類的構(gòu)造方法:Character(charc)創(chuàng)建一個(gè)Character類型的對(duì)象。Character對(duì)象調(diào)用charValue()方法可以返回該對(duì)象含有的char型數(shù)據(jù)例子18中,將一個(gè)字符數(shù)組中的小寫字母變成大寫字母,并將大寫字母變成小寫字母例子184.11基本類型的類包裝
4.11.1Double和Float類4.11.2Byte、Short、Integer、Long類4.11.3Character類4.11.4自動(dòng)裝箱與拆箱自動(dòng)裝箱就是允許把一個(gè)基本數(shù)據(jù)類型的值直接賦值給基本數(shù)據(jù)類型相對(duì)應(yīng)的類的實(shí)例,例如:
Integernumber=100;或
intm=100;Integernumber=m;上述語句的裝箱過程是:Integernumber=newInteger(m);自動(dòng)拆箱就是允許把基本數(shù)據(jù)類型的類的實(shí)例當(dāng)作相應(yīng)的基本數(shù)據(jù)類型來使用,例如:number是一個(gè)Integer對(duì)象,那么允許:
intx=number+number;上述語句的拆箱過程是:intx=Value()+Value();例子19演示了自動(dòng)裝箱和拆箱。例子194.12反編譯和文檔生成器
4.12.1javap反編譯4.12.2javadoc制作文檔javap.exe可以將字節(jié)碼反編譯為源碼,查看源碼類中的public方法名字和public成員變量的名字,例如:
javapjava.util.Date將列出Date中的public方法和public成員變量javadoc.exe可以制做源文件的html格式文檔。例如:
javadocExample.java將例子20中的Employee.java保存在c:\c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第6章 K近鄰
- 2025至2030年中國(guó)數(shù)控雙柱立式銑車床數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年湖北體育職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫新版
- 萬兆網(wǎng)絡(luò)的市場(chǎng)需求分析
- 2025至2030年中國(guó)扭擺鐘數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 商業(yè)銀行網(wǎng)絡(luò)金融個(gè)人客戶服務(wù)協(xié)議
- 2025至2030年中國(guó)快走絲大錐度線切割機(jī)床數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 陜西政協(xié)月度協(xié)商聚焦加強(qiáng)和改進(jìn)法律援助工作-
- 2025至2030年中國(guó)開式快速返程壓力機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 二零二五年度防盜門產(chǎn)品安全檢測(cè)與風(fēng)險(xiǎn)評(píng)估合同
- 普洱市直屬機(jī)關(guān)遴選筆試真題
- 2024-2030年中國(guó)電競(jìng)耳機(jī)行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- Unit1Myfamily單詞解讀(課件)Joinin外研劍橋英語五年級(jí)上冊(cè)
- 中職汽修專業(yè)《汽車底盤構(gòu)造與維修》說課稿
- 員工聘用合同范本(2024版)
- DL∕T 5161.6-2018 電氣裝置安裝工程質(zhì)量檢驗(yàn)及評(píng)定規(guī)程 第6部分:接地裝置施工質(zhì)量檢驗(yàn)
- 消防工程施工施工方法及工藝要求
- 部編版道德與法治六年級(jí)下冊(cè)課程綱要
- DL-T439-2018火力發(fā)電廠高溫緊固件技術(shù)導(dǎo)則
- 2024年湖南電氣職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫附答案
- (正式版)JBT 14787-2024 可同步限矩型液力耦合器
評(píng)論
0/150
提交評(píng)論