版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java開(kāi)發(fā)環(huán)境和程序設(shè)計(jì)初步
聯(lián)系方式金浩俠
tel有問(wèn)題一定要問(wèn)主要內(nèi)容1.1Java語(yǔ)言發(fā)展歷史1.2Java語(yǔ)言的特點(diǎn)1.3Java的工作原理1.4Java運(yùn)行環(huán)境JDK1.5構(gòu)建Java程序1.6開(kāi)發(fā)工具1.人物JamesGosling-Java之父-戴著眼睛的蜘蛛-Sun副總裁
BillJoy-Sun創(chuàng)始人之一
-軟件業(yè)的愛(ài)迪生-2003年離開(kāi)Sun2.關(guān)鍵詞綠色計(jì)劃Green與平臺(tái)無(wú)關(guān)Java最初的名字:橡樹(shù)Oak一杯飄香的咖啡Java網(wǎng)絡(luò)與Java現(xiàn)在請(qǐng)觀看java+youSun硅谷總部圖片Sun硅谷總部圖片Sun硅谷總部圖片Sun硅谷總部圖片Sun硅谷總部圖片TheNetwork
istheComputerSun董事會(huì)主席:ScottMcNealy
SunCEO(任期1982-2006)ScottMcNealySun公司CEO:
JoanthanSchwartz
2006-2010任職JoanthanSchwartzSun和Oracle介紹Sun和Oracle
2009.4Oracle收購(gòu)SunIBM、Sun、Oracle三家公司比較Oracle主頁(yè)
Oracle目標(biāo)Jonathan宣布辭職
Java應(yīng)用:Google地圖Java應(yīng)用:小游戲3.Java開(kāi)發(fā)平臺(tái)J2SE(
Java
2
Standard
Edition),Java的標(biāo)準(zhǔn)版,針對(duì)普通PC應(yīng)用。J2EE(
Java
2
Enterprise
Edition),Java的企業(yè)版,針對(duì)企業(yè)網(wǎng)應(yīng)用。J2ME(Java2MicroEdition),針對(duì)嵌入式設(shè)備和消費(fèi)類(lèi)電器,如手機(jī)等。
1.2Java的特點(diǎn)Java是一種具有簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯性、安全、平臺(tái)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)執(zhí)行等特性的語(yǔ)言。特點(diǎn)簡(jiǎn)單并面向?qū)ο篝敯舨踩Y(jié)構(gòu)中立并可以移植高性能解釋執(zhí)行、多線程并且是動(dòng)態(tài)的解釋性Java語(yǔ)言分兩步執(zhí)行1)由編譯器將用戶程序編譯成字節(jié)碼2)由Java虛擬機(jī)(JavaVirtualMachine)解釋執(zhí)行字節(jié)碼可以在不同的硬件平臺(tái)上實(shí)現(xiàn)不同的Java虛擬機(jī),保證了Java語(yǔ)言的平臺(tái)無(wú)關(guān)性和可移植性。1.3Java的工作原理JavaApplicationJavaAppletServlets(JSP)JavaAPIWebServer字節(jié)碼BytecodesJavaVirtualMachine(JVM)HardwarePlatformJava虛擬機(jī)軟件模擬的計(jì)算機(jī)執(zhí)行字節(jié)碼文件(*.class)不同的軟硬件平臺(tái)需要對(duì)Java虛擬機(jī)做專(zhuān)門(mén)的實(shí)現(xiàn)Java程序執(zhí)行過(guò)程1Java程序執(zhí)行過(guò)程2Java程序執(zhí)行過(guò)程21.4Java運(yùn)行環(huán)境JDKJDK:Java開(kāi)發(fā)工具包Java
DevelopmentKit——面向開(kāi)發(fā)人員JRE:Java運(yùn)行時(shí)環(huán)境JavaRuntimeEnvironment——面向Java程序的使用者
JDK安裝及環(huán)境設(shè)置對(duì)于WIN
2000\WIN
XP系統(tǒng),具體步驟如下:
控制面板/系統(tǒng)/高級(jí)/環(huán)境變量,在系統(tǒng)變量中雙擊path選項(xiàng),在對(duì)話框中“變量值”中插入C:\ProgramFiles\Java\jdk1.6.0_16\bin1.5
構(gòu)建Java程序Java程序分成兩大類(lèi):Java應(yīng)用程序Application控制臺(tái)程序:在DOS窗口運(yùn)行,程序入口是main()方法窗口程序:有圖形界面,程序入口是main()方法Java小應(yīng)用程序Applet:嵌入在HTML文件中,在瀏覽器中運(yùn)行,沒(méi)有main()方法HelloWorld程序//Example1//ThisisasimpleinstanceofjavaapplicationpublicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!”);}}程序分析類(lèi)定義
Java程序的基本組成部分是類(lèi)(class),如本例中的HelloWorld類(lèi)。main()方法
JavaApplication程序的入口是main()方法。它有固定的書(shū)寫(xiě)格式:
publicstaticvoidmain(Stringargs[]){ …… }程序分析程序內(nèi)容
由方法體實(shí)現(xiàn)程序要完成的功能,方法的實(shí)現(xiàn)由一個(gè)個(gè)語(yǔ)句組成注釋
與C++相同,一行中‘//’后的內(nèi)容為注釋?zhuān)?*’和‘*/’中的內(nèi)容也是注釋Java程序的編譯運(yùn)行javacHelloWorld.java
源文件名為HelloWorld.java,注意:文件名必須與公共類(lèi)名相同;由javac編譯器編譯源程序,產(chǎn)生字節(jié)碼文件(HelloWorld.class)javaHelloWorld
由java解釋器解釋執(zhí)行1.6開(kāi)發(fā)工具
EclipseMyEclipseEclipse——一個(gè)集成開(kāi)發(fā)環(huán)境IDE(IntegratedDevelopingEnvironment),IBM公司,開(kāi)源。
目前主要用作JavaIDE。MyEclipse——Genuitec公司,Eclipse的插件,不免費(fèi)。第2章Java程序設(shè)計(jì)基礎(chǔ)
2.1標(biāo)識(shí)符與關(guān)鍵字Java的符號(hào)集采用Unicode字符集——一個(gè)字符占兩個(gè)字節(jié),不論中文、英文還是其他字符標(biāo)識(shí)符為變量、類(lèi)或方法起的一個(gè)名稱以字母、下劃線或$符號(hào)開(kāi)頭由字母、下劃線、$符號(hào)和數(shù)字組成區(qū)分大小寫(xiě),沒(méi)有最大長(zhǎng)度限制,不能使用關(guān)鍵字示例:identifier、userName、user_name、_sys_varl、$change2.2.1數(shù)據(jù)類(lèi)型Java編程語(yǔ)言定義了8種基本數(shù)據(jù)類(lèi)型布爾——boolean字符——char整數(shù)——byte、short、int和long浮點(diǎn)——double和float布爾類(lèi)型——booleanboolean數(shù)據(jù)類(lèi)型有兩個(gè)值:true和false例如:語(yǔ)句booleantruth=true;
聲明變量truth為boolean類(lèi)型,并將其賦值為true。字符類(lèi)型——char與Stringchar代表16位的Unicode字符字符必須在單引號(hào)(‘’)內(nèi)使用:
‘a(chǎn)’
字母a
‘\t’
制表符
‘\u????’
特定的Unicode字符,????用4個(gè)確切的16位數(shù)字代替字符類(lèi)型——char與Stringcharch=‘A’;//聲明并初始化一個(gè)char變量charch1,ch2;//聲明兩個(gè)char變量字符類(lèi)型——char與StringString不是基本數(shù)據(jù)類(lèi)型,而是一個(gè)類(lèi)字符在雙引號(hào)(“”)內(nèi)
“Hello,World!”使用如下:Stringstr1,str2;//聲明兩個(gè)String變量Stringgreeting=“GoodMorning!!\n”;StringerrorMessage=“RecordNotFound!”;//聲明兩個(gè)String變量并且初始化它們整數(shù)類(lèi)型——byte(8位)、short(16位)、int(32位)和long(64位)三種形式使用——十進(jìn)制、八進(jìn)制或十六進(jìn)制2十進(jìn)制整數(shù)2077以0開(kāi)頭表示八進(jìn)制值0xBAAC以0x開(kāi)頭表示十六進(jìn)制值默認(rèn)是int類(lèi)型使用字母L或l定義long類(lèi)型浮點(diǎn)類(lèi)型
——float(32位)和double(64位)浮點(diǎn)數(shù)包括十進(jìn)制浮點(diǎn)或者下列所示之一:E或e(加指數(shù)值)F或f(float)D或d(double)3.14一個(gè)簡(jiǎn)單的浮點(diǎn)值(一個(gè)double類(lèi)型)6.02E23一個(gè)大浮點(diǎn)值2.718F一個(gè)簡(jiǎn)單的float值123.4E+306D一個(gè)帶有D(多余)的大的double值默認(rèn)類(lèi)型是double例子publicclassAssign{publicstaticvoidmain(Stringargs[]){intx,y;floatz=3.414f;doublew=3.1415;booleantruth=true;charc;Stringstr;Stringstr1=“bye”;c=‘A’;str=“Hioutthere!”;x=6;y=1000;}}y=3.1415926;w=175,000;truth=1;z=3.14156;為什么不合法2.2.2變量變量:聲明變量必須在類(lèi)的定義內(nèi),可以在方法內(nèi)或者方法外在方法內(nèi)定義的變量稱為局部變量,需要顯式的對(duì)其初始化成員變量和類(lèi)變量自動(dòng)初始化數(shù)字型初始值為0對(duì)象型初始值為null2.2.3常量常量:在程序運(yùn)行中其值保持不變的量。文字常量:在程序中直接寫(xiě)出量值的常量,
如:37,2.1,true等。符號(hào)常量:用標(biāo)識(shí)符代表的常量,
如:finalintx=100;2.2.4基本數(shù)據(jù)類(lèi)型間的轉(zhuǎn)換一般形式:(類(lèi)型)(表達(dá)式)作用:將表達(dá)式的結(jié)果強(qiáng)制轉(zhuǎn)換為另一種類(lèi)型低存儲(chǔ)位可以自動(dòng)轉(zhuǎn)換為高存儲(chǔ)位數(shù)據(jù)類(lèi)型高存儲(chǔ)位則必須通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換才能轉(zhuǎn)換為低存儲(chǔ)位數(shù)據(jù)類(lèi)型2.2.5封裝類(lèi)(Wrapper類(lèi))基本數(shù)據(jù)類(lèi)型Wrapper類(lèi)booleanBooleanbyteBytecharCharactershortShortintIntegerlongLongfloatFloatdoubleDoubleWrapper類(lèi)通過(guò)將值傳遞給相應(yīng)的構(gòu)造器,可以構(gòu)建Wrapper類(lèi)對(duì)象例如:intpInt=500;IntegerwInt=newInteger(pInt);intp2=wIValue();Wrapper類(lèi)當(dāng)轉(zhuǎn)換基本數(shù)據(jù)類(lèi)型時(shí)Wrapper類(lèi)很有用,因?yàn)榭梢允褂煤芏郬rapper類(lèi)方法。例如:Stringstr=“365”;intx=Integer.parseInt(str);
或intx=Integer.valueOf(str).intValue();2.3操作運(yùn)算符與表達(dá)式1.邏輯運(yùn)算符邏輯運(yùn)算符是(在C語(yǔ)言里用的很多,JAVA里少)!一元邏輯非&二元邏輯與^二元邏輯異或|二元邏輯或短路邏輯運(yùn)算符是&&二元條件邏輯與||二元條件邏輯或邏輯運(yùn)算符0值不能自動(dòng)解釋為false,
非0值不能自動(dòng)解釋為true。如:inti=1;if(i)//generatesacompileerrorif(i!=0)//correct邏輯運(yùn)算符短路邏輯操作符MyDated;if((d!=null)&&(d.day>31)){//dosomethingwithd}
當(dāng)?shù)谝粋€(gè)子表達(dá)式(d!=null)為假時(shí),第二個(gè)子表達(dá)式就被跳過(guò),全部表達(dá)式總是假的。
同樣,使用||操作符,如果第一個(gè)表達(dá)式返回為真,則不必計(jì)算第二個(gè)表達(dá)式,因?yàn)檎麄€(gè)表達(dá)式必定為真。2.引用操作符“點(diǎn)”符號(hào):<對(duì)象>.<成員>用于訪問(wèn)對(duì)象成員,包括屬性和方法。說(shuō)明點(diǎn)的操作可使您訪問(wèn)類(lèi)的非私有屬性和方法在方法的定義內(nèi),訪問(wèn)本地成員不需要使用點(diǎn)符號(hào)3.對(duì)象運(yùn)算符AinstanceofB用來(lái)判定對(duì)象A是否為類(lèi)B的對(duì)象4.字符串運(yùn)算符+操作符執(zhí)行String連接產(chǎn)生新的String一個(gè)參數(shù)必須是String對(duì)象非字符串對(duì)象會(huì)自動(dòng)轉(zhuǎn)換為String對(duì)象,如要轉(zhuǎn)換為等價(jià)的字符串時(shí),使用toString()成員方法字符串運(yùn)算符Stringfirst=“James”,last=“Gosling”;Stringname=first+last;結(jié)果:name的值是JamesGosling條件分支與循環(huán)控制語(yǔ)句順序結(jié)構(gòu)分支結(jié)構(gòu)
if、switch循環(huán)結(jié)構(gòu)
for、while、do-while練習(xí):輸入小寫(xiě)字符串,轉(zhuǎn)換成小寫(xiě)字符串書(shū)面作業(yè)將給定的數(shù)字轉(zhuǎn)換為大寫(xiě),如12345.67轉(zhuǎn)換為壹萬(wàn)貳仟叁佰肆拾伍圓陸角柒分班級(jí)-學(xué)號(hào)-姓名-作業(yè)2.rar發(fā)送至第4章Java面向?qū)ο缶幊?/p>
——類(lèi)和對(duì)象4.2.2類(lèi)的定義Java類(lèi)的基本語(yǔ)法:<修飾符>class<類(lèi)名>{[<屬性聲明>][<構(gòu)造器聲明>][<方法聲明>]}<類(lèi)名>可以是任何合法的標(biāo)識(shí)符,并且是所聲明類(lèi)的名字。有幾種可使用的<修飾符>,但現(xiàn)在只使用public,聲明類(lèi)可被任意訪問(wèn)。類(lèi)的正文聲明了與類(lèi)相關(guān)的數(shù)據(jù)屬性、構(gòu)造器和方法的集合。示例例4.1定義一個(gè)類(lèi)來(lái)描述圓的特征和行為。類(lèi)名:Circle成員變量:nCenterXnCenterYnRadius成員方法:setRadius(int):voidgetRadius():intgetArea():float4.2.3成員變量變量聲明的一般格式:<修飾符><類(lèi)型><名稱>;例如:privateintx;<名稱>可以是任何合法的標(biāo)識(shí)符,它是所聲明屬性的名字。有幾種可用的<修飾符>,但現(xiàn)在只使用public或private。private聲明該屬性只能由該類(lèi)的方法訪問(wèn)。屬性的<類(lèi)型>可以是任何基本類(lèi)型(int,boolean等)或任何類(lèi)。修飾符final:聲明常量,如:finalintCONSTANT=50;
常量的值不能被修改。static:聲明靜態(tài)變量(類(lèi)變量),如:staticintnCounter;4.3聲明方法方法的基本語(yǔ)法:<修飾符><返回類(lèi)型><名稱>([<參數(shù)表>]){[<語(yǔ)句>]}<名稱>可以是任何合法的標(biāo)識(shí)符,但限制使用那些已經(jīng)在使用的名稱。<修飾符>是可選項(xiàng),并可有很多不同的修飾符,包括public、protected和private等。public訪問(wèn)修飾符表明可從其他代碼調(diào)用該方法。private表明方法只能在由該類(lèi)中其他方法調(diào)用。示例例4-3定義一個(gè)人類(lèi),描述人類(lèi)的姓名、年齡、身高、體重,定義一個(gè)方法用來(lái)檢驗(yàn)人的體重是否在正常范圍之內(nèi),定義一個(gè)方法用于輸出個(gè)人資料。
4.3.3方法參數(shù)的傳遞方式形參:方法的聲明中的參數(shù)
聲明形參的類(lèi)型和名稱實(shí)參:調(diào)用方法語(yǔ)句中的參數(shù)
有具體值例4-5
按值傳遞swap_value(intn1,intn2){intn0;n0=n1;n1=n2;n2=n0;System.out.println(n1);System.out.println(n2);}例4-5
按引用傳遞swap(MethodExample1n){intn0;n0=n.n1;n.n1=n.n2;n.n2=n0;System.out.println(n.n1);System.out.println(n.n2);}例4-5publicstaticvoidmain(Stringargs[]){intn1=1,n2=10;MethodExample1numbers=newMethodExample1();numbers.swap_value(1,10);System.out.println(“main()方法中n1=”+n1+”n2=”+n2);numbers.n1=2;numbers.n2=20;numbers.swap(numbers);System.out.println(“main()方法中numbers.n1=”+numbers.n1+”numbers.n2=”+numbers.n2);}4.4構(gòu)造函數(shù)聲明構(gòu)造函數(shù)構(gòu)造函數(shù)的基本語(yǔ)法:<修飾符><類(lèi)名>([<參數(shù)表>]){[<語(yǔ)句>]}構(gòu)造函數(shù)特點(diǎn)構(gòu)造函數(shù)作用:完成類(lèi)對(duì)象的初始化工作構(gòu)造函數(shù)的名稱必須與類(lèi)名相同構(gòu)造器沒(méi)有返回值并且不可被繼承一般將構(gòu)造函數(shù)的修飾符聲明為public構(gòu)造函數(shù)中不能有return語(yǔ)句構(gòu)造函數(shù)參數(shù)參數(shù)表與方法聲明中的一樣。可以象方法一樣向構(gòu)造函數(shù)傳遞參數(shù)。構(gòu)造函數(shù)可以有0個(gè)、1個(gè)或者多個(gè)參數(shù)。4.4.1無(wú)參數(shù)的構(gòu)造函數(shù)沒(méi)有構(gòu)造函數(shù)——使用默認(rèn)的構(gòu)造函數(shù)(沒(méi)有參數(shù),沒(méi)有方法體)如果使用沒(méi)有參數(shù)的構(gòu)造函數(shù),則創(chuàng)建的對(duì)象具有相同的初始值例4-7classSameCircle{publicintnOrignX=3;publicintnOrignY=3;publicintnRadius=1;publicSameCircle(){}}顯式初始化在執(zhí)行構(gòu)造函數(shù)方法體之前執(zhí)行例4-7classSameCircle{publicintnOrignX;publicintnOrignY;publicintnRadius;publicSameCircle(){nOrignX=3;nOrignY=3;nRadius=1;}}4.4.2帶參數(shù)的構(gòu)造函數(shù)classSameCircle{publicintnOrignX;publicintnOrignY;publicintnRadius;publicSameCircle(intnOrignX,intnOrignY,intnRadius){this.nOrignX=nOrignX;this.nOrignY=nOrignY;this.nRadius=nRadius;}}this:代表當(dāng)前對(duì)象構(gòu)造函數(shù)的重載一個(gè)類(lèi)可以有多個(gè)構(gòu)造函數(shù),叫做構(gòu)造函數(shù)的重載。條件(滿足其一)參數(shù)的個(gè)數(shù)不同參數(shù)的類(lèi)型不同例1classSameCircle{publicintnOrignX;publicintnOrignY;publicintnRadius;publicSameCircle(intnOrignX,intnOrignY,intnRadius){this.nOrignX=nOrignX;this.nOrignY=nOrignY;this.nRadius=nRadius;}publicSameCircle(intnOrignX,intnOrignY){this.nOrignX=nOrignX;this.nOrignY=nOrignY;this.nRadius=5;}publicSameCircle(intnRadius){this.nOrignX=3;this.nOrignY=4;this.nRadius=nRadius;}}例1的另一種寫(xiě)法classSameCircle{publicintnOrignX;publicintnOrignY;publicintnRadius;publicSameCircle(intnOrignX,intnOrignY,intnRadius){this.nOrignX=nOrignX;this.nOrignY=nOrignY;this.nRadius=nRadius;}publicSameCircle(intnOrignX,intnOrignY){this(nOrignX,nOrignY,5);}publicSameCircle(intnRadius){this(3,4,nRadius);}}構(gòu)造函數(shù)的使用不能由編程人員顯式調(diào)用。在創(chuàng)建一個(gè)類(lèi)的新對(duì)象的同時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類(lèi)的構(gòu)造函數(shù)為新對(duì)象初始化。構(gòu)造函數(shù)只能和new運(yùn)算符一起使用。格式類(lèi)名
對(duì)象名=new
構(gòu)造函數(shù)名稱(成員變量的初始值)默認(rèn)構(gòu)造函數(shù)每個(gè)類(lèi)至少有一個(gè)構(gòu)造函數(shù)。如果不編寫(xiě)構(gòu)造函數(shù),則自動(dòng)添加默認(rèn)構(gòu)造函數(shù):默認(rèn)構(gòu)造函數(shù)不帶參數(shù)默認(rèn)構(gòu)造函數(shù)函數(shù)體為空不必編寫(xiě)構(gòu)造函數(shù)就能使用newXxx()創(chuàng)建
對(duì)象實(shí)例示例classSameCircle{publicintnOrignX;publicintnOrignY;publicintnRadius;publicSameCircle(intnOrignX,intnOrignY,intnRadius){this.nOrignX=nOrignX;this.nOrignY=nOrignY;this.nRadius=nRadius;}publicstaticvoidmain(Stringargs[]){SameCirclec1=newSameCircle();SameCirclec2=newSameCircle(3,4,5);}}哪個(gè)語(yǔ)句有錯(cuò)?為什么?4.5對(duì)象(類(lèi)的實(shí)例化)4.5.1對(duì)象的生成
(1)對(duì)象的聲明格式:<類(lèi)名><對(duì)象名>;如:SameCirclec1,c2;c1和c2是兩個(gè)空對(duì)象。c1c2(2)創(chuàng)建對(duì)象格式:<對(duì)象名>=new<類(lèi)名>(實(shí)參);如:c1=newSameCircle(3,4,5);c2=newSameCircle(6,7,8);345…678…c1c2對(duì)象c1的首地址對(duì)象c2的首地址4.5.2對(duì)象的引用SameCirclec1=newSameCircle(3,4,5);SameCirclec2=c1;345…c1對(duì)象c1的首地址c2對(duì)象c1的首地址c2是c1的引用,是c1的首地址作業(yè)書(shū)面作業(yè):400頁(yè)
第1章
二、2、3上機(jī)作業(yè):1.403頁(yè)
三、22.編寫(xiě)一個(gè)類(lèi)模擬銀行賬戶基本屬性和操作(存款、取款、查詢信息等)。4.5.3對(duì)象的清除對(duì)象為null時(shí),由Java的自動(dòng)垃圾收集機(jī)制清除對(duì)象,釋放對(duì)象占用內(nèi)存手動(dòng)編寫(xiě)finalize()方法撤銷(xiāo)對(duì)象——不提倡使用4.5.4對(duì)象的內(nèi)存模型棧內(nèi)存:在方法中定義的變量(基本類(lèi)型和引用類(lèi)型)。超過(guò)變量的作用域時(shí),自動(dòng)釋放變量的內(nèi)存堆內(nèi)存:new創(chuàng)建的對(duì)象(包括數(shù)組),由Java的自動(dòng)垃圾收集機(jī)制來(lái)清除示例(1)聲明對(duì)象Personp;未初始化地址p棧內(nèi)存堆內(nèi)存示例(2)創(chuàng)建對(duì)象p=newPerson();未初始化地址p棧內(nèi)存堆內(nèi)存null00.0…0.0nameageweightheight0x30000x3000注意二者的區(qū)別棧stack——連續(xù)的內(nèi)存區(qū)域,大小固定,編譯時(shí)確定所需空間大小,效率高堆heap——不連續(xù)的內(nèi)存區(qū)域,運(yùn)行時(shí)確定所需空間大小(支持面向?qū)ο蟮亩鄳B(tài)性,如:運(yùn)行時(shí)才能確定是哪個(gè)類(lèi)的對(duì)象),效率低,但靈活4.6實(shí)例成員和類(lèi)成員例4-10publicclassClerk{privateintC_ClerkNo;publicstaticintC_NextClerkNo=1000;publicClerk(){C_ClerkNo=++C_NextClerkNo;}}例4-10classTest{publicstaticvoidmain(Stringargs[]){Clerkc1=newClerk();Clerkc2=newClerk();}}例4-10publicclassClerk{privateintC_ClerkNo;publicstaticintC_NextClerkNo=1000;publicClerk(){C_ClerkNo=++C_NextClerkNo;}publicintgetClerkNo(){returnC_ClerkNo;}}例4-10classTest{publicstaticvoidmain(Stringargs[]){Clerkc1=newClerk();Clerkc2=newClerk();System.out.println(“c1:nextClerkNo”);System.out.println(c1.C_NextClerkNo);System.out.println(“c1:clerkNO”);System.out.println(c1.getClerkNo());…}}Clerk+C_NextClerkNo:int=1000-C_ClerkNo:intc1:ClerkC_ClerkNo=1001c2:ClerkC_ClerkNo=1002《實(shí)例》《實(shí)例》在這個(gè)示例中,為創(chuàng)建的每個(gè)對(duì)象分配了一個(gè)唯一的序列號(hào),從1000開(kāi)始向上遞增。變量C_NextClerkNo在所有實(shí)例間共享,因此當(dāng)一個(gè)對(duì)象的構(gòu)造器增加C_NextClerkNo的值時(shí),下一個(gè)創(chuàng)建的對(duì)象就可接收到這個(gè)增加的值。類(lèi)屬性說(shuō)明使用static來(lái)標(biāo)記的變量是共享于類(lèi)的所有實(shí)例的變量。例如:可以使用該變量作為實(shí)例間通信的基礎(chǔ),或者跟蹤已創(chuàng)建的實(shí)例數(shù)。如果static變量未被標(biāo)記為private,那么可從類(lèi)外訪問(wèn)它。這樣,不需要類(lèi)的實(shí)例,就可通過(guò)類(lèi)名引用它。publicclassOtherClass{publicvoidincrementNumber(){Count.counter++;}}類(lèi)屬性的使用API中:如Math.PI(不用創(chuàng)建Math類(lèi)的對(duì)象就可以使用PI這個(gè)類(lèi)屬性)作為全局變量,即只想用一個(gè)存儲(chǔ)區(qū)域來(lái)保存特定的數(shù)據(jù)。無(wú)論創(chuàng)建多少個(gè)對(duì)象,甚至不創(chuàng)建對(duì)象都可以使用。思考題:1.銀行卡的年費(fèi)2.例4-11銀行卡舉例publicclassBankCard{privateStringCardNO;//卡號(hào)…
publicstaticdoubleannual_fee;//年費(fèi)}例4-11publicclassClerk{privateintC_ClerkNo;privatedoubleC_ClerkSalary;publicstaticintC_NextClerkNo=1000;publicstaticdoubleC_LowSalary=280;//最低工資publicClerk(doublesalary){C_ClerkNo=++C_NextClerkNo;C_ClerkSalary=C_LowSalary+salary;}}static方法類(lèi)方法示例publicclassClerk{privateintC_ClerkNo;publicstaticintC_NextClerkNo=1000;publicstaticintgetNextNo(){returnC_NextClerkNo;}publicClerk(){C_ClerkNo=++C_NextClerkNo;}}使用類(lèi)名訪問(wèn)靜態(tài)方法publicclassTest{publicstaticvoidmain(Stringargs[]){System.out.println(“Numberofclerkis”+Clerk.getNextNo());Clerkc1=newClerk();System.out.println(“Numberofclerkis”+Clerk.getNextNo());}}static方法說(shuō)明main()方法是static方法,因?yàn)閳?zhí)行main方法時(shí),JVM并不創(chuàng)建類(lèi)的實(shí)例。因此如果有成員數(shù)據(jù),必須創(chuàng)建對(duì)象來(lái)訪問(wèn)它。如:Math類(lèi)的運(yùn)算方法都定義為static,可以直接通過(guò)Math.方法名()來(lái)訪問(wèn)。static方法說(shuō)明除了局部變量、static屬性及其參數(shù)外,static方法不能訪問(wèn)任何變量。如果試圖訪問(wèn)非static屬性會(huì)引起編譯器錯(cuò)誤。非static屬性綁定到一個(gè)實(shí)例上并且只有通過(guò)實(shí)例引用才能訪問(wèn)。錯(cuò)誤的例子publicclassClerk{privateintC_ClerkNo;publicstaticintC_NextClerkNo=1000;publicClerk(){C_ClerkNo=++C_NextClerkNo;}publicstaticintgetNextNo(){returnC_ClerkNo;//編譯錯(cuò)誤}}判斷哪些語(yǔ)句錯(cuò)誤?classTest{staticintnum;intc;publicstaticvoidmain(Stringargs[]){num=100;c=100;}staticvoidss(){num=100;c=100;}voidtt(){num=100;c=100;}}正確的寫(xiě)法classTest{staticintnum;intc;publicstaticvoidmain(Stringargs[]){num=100;Testt=newTest();t.c=100;}}分析書(shū)上的例子
錯(cuò)在哪兒?classInstanceTest{intVariable;staticpublicintmethod(){returnVariable;}staticpublicvoidmethod2(intvariable){this.Variable=variable;}}靜態(tài)初始化器靜態(tài)初始化一個(gè)類(lèi)可以在“靜態(tài)塊”中(而非方法體內(nèi))包含代碼靜態(tài)塊代碼僅在加載類(lèi)時(shí)執(zhí)行一次如果類(lèi)中包含多個(gè)靜態(tài)塊,它們將被按照在類(lèi)中出現(xiàn)的順序執(zhí)行示例1classCount{publicstaticintcounter;static{counter=10;}}publicclassTest{publicstaticvoidmain(Stringargs[]){System.out.println(“counter=”+Count.counter);}}
示例2classss{static{System.out.println(“hi”);}}publicclassTest{publicstaticvoidmain(Stringargs[]){sst1=newss();sst2=newss();sst3=newss();}}初始化實(shí)例變量的初始化——構(gòu)造函數(shù)類(lèi)變量(static變量)的初始化——靜態(tài)初始化器4.7應(yīng)用程序的命令行參數(shù)格式一:java類(lèi)名
參數(shù)1參數(shù)2參數(shù)3…要求:1.參數(shù)之間以空格分隔2.參數(shù)中不能包含空格例4-12if(args.length>0){for(inti=0;i<args.length;i++)System.out.println(args[i]);}應(yīng)用程序的命令行參數(shù)格式二:java類(lèi)名
“參數(shù)1”
“參數(shù)2”
“參數(shù)3”…要求:參數(shù)中可以包含空格注意:參數(shù)一和參數(shù)二可以混合使用,即帶空格的參數(shù)用雙引號(hào),不帶空格的參數(shù)不必用雙引號(hào)例4-15任意輸入五個(gè)數(shù),求它們的平均值。注意:接收到的參數(shù)需要進(jìn)行類(lèi)型轉(zhuǎn)換,將字符串轉(zhuǎn)換為數(shù)值型。例4-15floatsum=0;if(args.length==5){for(inti=0;i<5;i++)sum+=Float.parseFloat(args[i]);}System.out.println(sum);System.out.println((float)sum/args.length);書(shū)面作業(yè)403頁(yè)
三、4接收鍵盤(pán)輸入的方法importjava.io.*;classtest{publicstaticvoidmain(Stringargs[])throwsIOException{Strings;BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));s=in.readLine();System.out.print(s);}}5.1類(lèi)的繼承Employee類(lèi)Employee+name:String+salary:double+birthDate:Date+getDetails():StringpublicclassEmployee{publicStringname;publicdoublesalary;publicDatebirthDate;
publicStringgetDetails(){...}}Manager類(lèi)Manager+name:String+salary:double+birthDate:Date+department:String+getDetails():StringpublicclassManager{publicStringname;publicdoublesalary;publicDatebirthDate;
publicStringdepartment;publicStringgetDetails(){...}}子類(lèi)化Employee+name:String+salary:double+birthDate:Date+getDetails():StringManager+department:StringpublicclassEmployee{publicStringname;publicdoublesalary;publicDatebirthDate;
publicStringgetDetails(){...}}publicclassManagerextendsEmployee{publicStringdepartment;}單繼承
(Java只支持單繼承)當(dāng)類(lèi)只從一個(gè)類(lèi)繼承時(shí),稱為單繼承語(yǔ)法:<修飾符>class<名稱>[extends<父類(lèi)>]{<聲明>*}實(shí)例importjava.util.Date;classEmployee{publicStringname;publicdoublesalary;publicDatebirthDate;
publicStringgetDetails(){
returnname+salary;
}}classManagerextendsEmployee{publicStringdepartment;}publicclassTest1{publicstaticvoidmain(Stringargs[]){Managerx=newManager();="Jack";x.salary=5000;System.out.println(x.getDetails());}}Date類(lèi)舉例:
以03-25-2010的形式輸出日期importjava.text.SimpleDateFormat;importjava.util.Date;publicclasstest{publicstaticvoidmain(String[]args){SimpleDateFormatSDF=newSimpleDateFormat("MM-dd-yyyy");Datedate=newDate();System.out.println(SDF.format(date));}}Date類(lèi)舉例:輸出星期幾importjava.text.SimpleDateFormat;importjava.util.Date;publicclasstest{publicstaticvoidmain(String[]args){SimpleDateFormatSDF1=newSimpleDateFormat("E");Datedate=newDate();System.out.println(SDF1.format(date));}}說(shuō)明子類(lèi)可以繼承超類(lèi)中非private的方法和屬性——不必重新定義子類(lèi)中可以增加新的屬性和方法繼承的目的:程序代碼重用,減少冗余96頁(yè)的例子Vehicle+speed:int+maintanceRecord:String+getSpeed():int+getMaintanceRecord():StringAutomobile-strModel:String-dateOfMade:String+getModel():String+getDateOfMade():String分析子類(lèi)中有哪些屬性和方法?5.1.2方法的重載(overload)一個(gè)類(lèi)中有多個(gè)同名的方法
如:Math類(lèi)中的min()方法條件(滿足其一):參數(shù)的個(gè)數(shù)不同參數(shù)的類(lèi)型不同如果兩個(gè)方法僅返回值不同,不是重載,會(huì)報(bào)錯(cuò)思考——錯(cuò)在哪兒?classtest{publicvoidprinttest(){System.out.println("ss");}publicintprinttest(){return1;}}例5-1:對(duì)矩形進(jìn)行初始化
方法1:左上角和右下角坐標(biāo)MyRectbuildRect(intx1,inty1,intx2,inty2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;returnthis;}例5-1:對(duì)矩形進(jìn)行初始化
方法2:左上角和右下角的點(diǎn)MyRectbuildRect(PointtopLeft,PointbottomRight){x1=topLeft.x;y1=topLeft.y;x2=bottomRight.x;y2=bottomRight.y;returnthis;}例5-1:對(duì)矩形進(jìn)行初始化
方法3:左上角的點(diǎn)和矩形的寬和高M(jìn)yRectbuildRect(PointtopLeft,intw,inth){x1=topLeft.x;y1=topLeft.y;x2=x1+w;y2=y1-h;returnthis;}5.1.3方法的覆蓋(override)覆蓋方法子類(lèi)可以修改從父類(lèi)繼承的行為子類(lèi)可以創(chuàng)建與父類(lèi)的方法不同功能的方法,但下面是相同的:方法名返回類(lèi)型參數(shù)列表實(shí)例importjava.util.Date;classEmployee{publicStringname;publicdoublesalary;publicDatebirthDate;
publicStringgetDetails(){
return“name:”+name+“\n”+“salary:”+salary;
}}classManagerextendsEmployee{publicStringdepartment;publicStringgetDetails(){
return"name:"+name+"\n"+"salary:"+salary+"\n"+"Managerof:"+department;}}實(shí)例publicclassTest1{publicstaticvoidmain(Stringargs[]){Employeee=newEmployee();="Mary";e.salary=3000;System.out.println(e.getDetails());Managerx=newManager();="Jack";x.salary=5000;x.department="Infor";System.out.println(x.getDetails());}}例5-2classCitizen{publicStringpersonID=“000000000000000000”;publicStringname=“無(wú)名氏”;publicStringsex=“男”;publicStringbirthday=“1900.1.1”;publicvoiddisplay(){…}}例5-2classStudentextendsCitizen{publicStringstudentID;publicStringregisterTime;publicintinit_result;publicvoiddisplay(){super.display();//執(zhí)行父類(lèi)的display()方法…//子類(lèi)中需要顯示的更多的內(nèi)容}}super關(guān)鍵字super關(guān)鍵字往往在覆蓋方法時(shí),真正的目標(biāo)不是代替現(xiàn)有的行為,而是在某些方面擴(kuò)展那個(gè)行為類(lèi)中使用super來(lái)指向父類(lèi)的成員,包括數(shù)據(jù)和方法super的三種使用方式super.方法名([參數(shù)表]);——調(diào)用父類(lèi)的方法super.成員變量名——訪問(wèn)父類(lèi)的成員變量super([參數(shù)表]);——調(diào)用父類(lèi)的構(gòu)造函數(shù)實(shí)例importjava.util.Date;classEmployee{privateStringname;privatedoublesalary;privateDatebirthDate;
publicStringgetDetails(){
return“name:”+name+“\n”+“salary:”+salary;
}}classManagerextendsEmployee{privateStringdepartment;publicStringgetDetails(){
returnsuper.getDetails()+"\n"+"Managerof:"+department;}}構(gòu)造函數(shù)不能繼承子類(lèi)從父類(lèi)繼承所有的方法和變量子類(lèi)不能繼承父類(lèi)的構(gòu)造函數(shù)有兩種方法獲得構(gòu)造函數(shù)使用默認(rèn)構(gòu)造函數(shù)編寫(xiě)一個(gè)或多個(gè)構(gòu)造函數(shù)調(diào)用父類(lèi)構(gòu)造函數(shù)要調(diào)用父類(lèi)構(gòu)造函數(shù),必須在子類(lèi)構(gòu)造函數(shù)的第一行使用super關(guān)鍵字要調(diào)用特定的父類(lèi)構(gòu)造函數(shù),必須為super提供參數(shù)如果沒(méi)有this或super調(diào)用,編譯器會(huì)插入一個(gè)對(duì)父類(lèi)無(wú)參數(shù)構(gòu)造函數(shù)的隱含調(diào)用:super()classEmployee{privateStringname;privatedoublesalary;publicEmployee(Stringn,doubles){name=n;salary=s;}publicEmployee(Stringn){name=n;}}classManagerextendsEmployee{privateStringdepartment;publicManager(Stringname,doublesalary,Stringdept){super(name,salary);department=dept;}publicManager(Stringname,Stringdept){super(name);department=dept;}
publicManager(Stringdept){department=dept;}}哪兒有問(wèn)題?實(shí)例publicclassTest1{publicstaticvoidmain(Stringargs[]){Managerx=newManager("ss",4000,"rr");}}上機(jī)作業(yè)定義一個(gè)形狀類(lèi)CShape,在此基礎(chǔ)上派生出矩形類(lèi)CRectangle和圓類(lèi)CCircle,兩者都有GetArea()函數(shù)計(jì)算對(duì)象的面積。試編寫(xiě)一個(gè)完整的程序。上機(jī)發(fā)現(xiàn)的問(wèn)題
有則改之,無(wú)則加勉環(huán)境變量如何設(shè)置?文件保存為*.java編譯:javac*.java,編譯通過(guò)后顯示什么?運(yùn)行:javamain方法所在類(lèi)名main方法寫(xiě)在哪兒?importjava.io.*是什么?類(lèi)圖CShape+GetArea():double+GetArea():doubleCRectangle+x:double+y:double+GetArea():doubleCCircle+r:double課時(shí)六
2009-9-21變量多態(tài)類(lèi)型為X的參考變量,其指向的對(duì)象類(lèi)型既可以是X,也可以是X的子類(lèi)如:Employeex=newManager();Employeey=newEmployee();例1——實(shí)例方法能夠被覆蓋classSuper{Stringname(){return“mother";}}classSubextendsSuper{Stringname(){return“baby";}}
例1——實(shí)例方法能夠被覆蓋classTest{publicstaticvoidmain(String[]args){Supers=newSub();System.out.println(());}}例2——靜態(tài)方法不能被覆蓋classSuper{staticStringname(){return“mother";}}classSubextendsSuper{staticStringname(){return“baby";}}例2——靜態(tài)方法不能被覆蓋classTest{publicstaticvoidmain(String[]args){Supers=newSub();System.out.println(());}}原因靜態(tài)方法在編譯時(shí)根據(jù)調(diào)用該方法的類(lèi)或?qū)ο笏鶎俚念?lèi)決定實(shí)例方法在運(yùn)行時(shí)根據(jù)對(duì)象所屬的類(lèi)決定例如:Supers=newSub();編譯時(shí)s是Super類(lèi)的對(duì)象,而運(yùn)行時(shí)s指向Sub類(lèi)的對(duì)象例3——屬性的隱藏classBase{intx=1;staticinty=2;}classSubclassextendsBase{intx=4;inty=5;}例3——屬性的隱藏publicclassTest{publicstaticvoidmain(String[]args){Subclasss=newSubclass();System.out.println(s.x+""+s.y);}}輸出什么?修改例3:例3’publicclassTest{publicstaticvoidmain(String[]args){Bases=newSubclass();System.out.println(s.x+""+s.y);}}輸出什么?原因:編譯時(shí)根據(jù)類(lèi)或?qū)ο箢?lèi)型決定總結(jié)父類(lèi)的實(shí)例方法被子類(lèi)的同名實(shí)例方法覆蓋父類(lèi)的靜態(tài)方法被子類(lèi)的同名靜態(tài)方法隱藏父類(lèi)的實(shí)例變量和類(lèi)變量可以被子類(lèi)的實(shí)例變量和類(lèi)變量隱藏例4classBase{intx=1;staticinty=2;Stringname(){return"mother";}staticStringstaticname(){return"staticmother";}}classSubclassextendsBase{intx=4;inty=5;Stringname(){return"baby";}staticStringstaticname(){return"staticbaby";}}例4publicclassTest{publicstaticvoidmain(String[]args){Subclasss=newSubclass();System.out.println(s.x+""+s.y);System.out.println(());System.out.println(s.staticname());Basess=s;System.out.println(ss.x+""+ss.y);System.out.println(());System.out.println(ss.staticname());}}隱藏和覆蓋的區(qū)別將子類(lèi)對(duì)象轉(zhuǎn)換為父類(lèi)對(duì)象(直接賦值)后,可以訪問(wèn)被隱藏的變量和方法(編譯時(shí)根據(jù)類(lèi)型決定),但是不能訪問(wèn)被覆蓋的變量和方法(運(yùn)行時(shí)根據(jù)類(lèi)型決定)。instanceof操作符
修改例4可以根據(jù)對(duì)象所屬的類(lèi)進(jìn)行不同的處理:
publicstaticvoidmain(String[]args){Basess=newSubclass();if(ssinstanceofSubclass){System.out.print(ss.x+""+ss.z);System.out.print(());System.out.print(ss.staticname());}}還存在問(wèn)題?classBase{intx=1;staticinty=2;}classSubclassextendsBase{intx=4;inty=5;intz=9;}編譯出錯(cuò)publicstaticvoidmain(String[]args){Basess=newSubclass();if(ssinstanceofSubclass){System.out.print(ss.z);}}解決方法——對(duì)象類(lèi)型轉(zhuǎn)換publicstaticvoidmain(String[]args){Basess=newSubclass();if(ssinstanceofSubclass){System.out.print(((Subclass)ss).z);}}對(duì)象類(lèi)型轉(zhuǎn)換
——對(duì)例2的修改classSuper{staticStringname(){return"mother";}}classSubextendsSuper{staticStringname(){return"baby";}}對(duì)象類(lèi)型轉(zhuǎn)換
——對(duì)例2的修改classTest{publicstaticvoidmain(String[]args){Supers=newSub();System.out.println(((Sub)s).name());}}對(duì)象類(lèi)型轉(zhuǎn)換
——對(duì)例3’的修改classBase{intx=1;staticinty=2;}classSubclassextendsBase{intx=4;inty=5;}對(duì)象類(lèi)型轉(zhuǎn)換
——對(duì)例3’的修改publicclassTest{publicstaticvoidmain(String[]args){Bases=newSubclass();System.out.println(((Subclass)s).x+""+((Subclass)s).y);}}多態(tài)的應(yīng)用舉例——例5classAnimal{publicvoideat(){}}classDogextendsAnimal{publicvoideat(){System.out.println("狗吃骨頭");}}classCatextendsAnimal{publicvoideat(){System.out.println("貓吃老鼠");}}classWolfextendsAnimal{publicvoideat(){System.out.println("吃喜羊羊");}}多態(tài)的應(yīng)用舉例——例5classTest{publicstaticvoidmain(Stringargs[]){Animalaa[]=newAnimal[3];aa[0]=newDog();aa[1]=newCat();aa[2]=newWolf();for(inti=0;i<3;i++){aa[i].eat();}}}抽象類(lèi)抽象類(lèi)抽象類(lèi):只能被繼承,不能實(shí)例化的類(lèi)。定義格式:abstractclass類(lèi)名{abstract返回值類(lèi)型
方法名([參數(shù)表]);…}說(shuō)明:抽象類(lèi)中可以包含抽象和非抽象方法,也可以不
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中山客運(yùn)駕駛員考試題庫(kù)
- 數(shù)學(xué)-浙江省湖州、衢州、麗水2024年11月三地市高三教學(xué)質(zhì)量檢測(cè)試卷試題和答案
- 吉首大學(xué)《合唱與合唱指揮2》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉首大學(xué)《Web編程技術(shù)》2021-2022學(xué)年期末試卷
- 《機(jī)床電氣控制與PLC》期末試卷-B卷及答案
- 吉林藝術(shù)學(xué)院《戲曲鑒賞》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林藝術(shù)學(xué)院《流行音樂(lè)演唱錄音實(shí)踐Ⅱ》2021-2022學(xué)年第一學(xué)期期末試卷
- 執(zhí)行四方協(xié)議書(shū)范本范本
- 2024年公證遺產(chǎn)繼承分配協(xié)議書(shū)模板
- 吉林師范大學(xué)《影視語(yǔ)言》2021-2022學(xué)年第一學(xué)期期末試卷
- 師德表現(xiàn)證明(樣張)
- 平行四邊形的面積課堂學(xué)習(xí)單
- 飛輪儲(chǔ)能在電網(wǎng)調(diào)頻中的工程應(yīng)用
- 家長(zhǎng)會(huì)課件:家庭教育為主題家長(zhǎng)會(huì)課件
- 市智慧航道與信息服務(wù)系統(tǒng)設(shè)計(jì)方案
- 麻醉藥品和第一類(lèi)精神藥品使用及殘余液銷(xiāo)毀登記記錄
- 江蘇某消防指揮中心工程監(jiān)理大綱
- 損失索賠函格式(九篇)
- 籃球場(chǎng)工程量清單與計(jì)價(jià)表-
- 九年級(jí)上冊(cè)語(yǔ)文作業(yè)本答案人教版同步練習(xí)冊(cè)
- GB/T 43187-2023車(chē)載無(wú)線通信終端
評(píng)論
0/150
提交評(píng)論