版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java2SE講解第一頁(yè),共八十一頁(yè)。Java基礎(chǔ)
1、語(yǔ)法基礎(chǔ)
2、面向?qū)ο? 3、JDBC4、異常課程內(nèi)容第二頁(yè),共八十一頁(yè)。3OOP&JavaBase面向?qū)ο缶幊?ObjectOrientedProgramming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))第三頁(yè),共八十一頁(yè)。4Java學(xué)習(xí)路線JavaSE應(yīng)用程序設(shè)計(jì):面向?qū)ο螅?lèi),繼承,接口,多態(tài),抽象與封裝)異常處理,I/O編程,集合框架,GUI程序設(shè)計(jì),多線程編程………數(shù)據(jù)庫(kù)的學(xué)習(xí):可以學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)安裝配置、基本管理及開(kāi)發(fā),使用OEM/SQLPlus,標(biāo)準(zhǔn)SQL,DML,DDL,函數(shù),事務(wù),約束,序列,索引,視圖,數(shù)據(jù)庫(kù)設(shè)計(jì),MySql,SQLServer的基本使用。JavaWeb應(yīng)用開(kāi)發(fā): JDBC,JSP,Servlet,JavaBean,HTML,JavaScript,Session/cookie,MVC設(shè)計(jì)模式,Tomcat,Eclipse+MyEclipse.Java企業(yè)級(jí)應(yīng)用開(kāi)發(fā):Struts,Hibernate,XML,J2EE/EJB,UML,Spring,AJAX第四頁(yè),共八十一頁(yè)。5Java語(yǔ)言的發(fā)展歷史Java已經(jīng)成為當(dāng)今最為流行的軟件開(kāi)發(fā)語(yǔ)言技術(shù)之一。第五頁(yè),共八十一頁(yè)。6Java的平臺(tái)無(wú)關(guān)性Java是一種既面向?qū)ο笥挚梢钥缙脚_(tái)的語(yǔ)言,即:編寫(xiě)一次,隨處運(yùn)行(Writeonce,Runanywhere);Java不僅適用于單機(jī)應(yīng)用程序和基于網(wǎng)絡(luò)的程序,也可用于創(chuàng)建消費(fèi)類(lèi)設(shè)備的附件程序,如移動(dòng)電話(huà)、掌上設(shè)備等。Java源程序代碼WindowsLinuxSolarisJVMJava虛擬機(jī)Java字節(jié)碼(可跨平臺(tái))編譯運(yùn)行第六頁(yè),共八十一頁(yè)。7Java虛擬機(jī)Java虛擬機(jī)(JavaVirtualMachine)是可運(yùn)行Java字節(jié)碼的虛擬計(jì)算機(jī)系統(tǒng);使用Java語(yǔ)言編寫(xiě)的程序,實(shí)際上是運(yùn)行在JVM之上,而不是運(yùn)行在操作系統(tǒng)上;它有一個(gè)解釋器組件,可以實(shí)現(xiàn)Java字節(jié)碼和計(jì)算機(jī)操作系統(tǒng)之間的通信。用戶(hù)USER字節(jié)碼程序JVM(Java虛擬機(jī))操作系統(tǒng)硬件第七頁(yè),共八十一頁(yè)。8Java虛擬機(jī)的運(yùn)行過(guò)程JIT代碼生成器.java源代碼文件.class字節(jié)碼文件編譯時(shí)運(yùn)行時(shí)硬件類(lèi)加載器字節(jié)碼校驗(yàn)器解釋器第八頁(yè),共八十一頁(yè)。Java發(fā)展史95年sun發(fā)布jdk1.098年jdk1.2后續(xù)jdk1.3、1.4、1.5目前jdk1.6、1.7現(xiàn)在SUN已推出Java2PlatformMicroEdition(Java2ME)Java2PlatformStandardEdition(Java2SE)Java2PlatformEnterpriseEdition(Java2EE)第九頁(yè),共八十一頁(yè)。JDK目錄src.zip:核心API所有類(lèi)的源文件bin:包含編譯器,解釋器等可執(zhí)行文件Demo:包含源代碼的程序示例
include:用于本地方法的文件jre:Java運(yùn)行環(huán)境lib:Java類(lèi)庫(kù)第十頁(yè),共八十一頁(yè)。Java開(kāi)發(fā)環(huán)境的下載、安裝、配置下載:安裝(windows環(huán)境下)配置環(huán)境變量:path驗(yàn)證:》Java–version》Javac編譯源文件》Java執(zhí)行文件》編寫(xiě)第一個(gè)Java文件:HelloWorld.java第十一頁(yè),共八十一頁(yè)。第一個(gè)JavaApplication應(yīng)用程序打開(kāi)記事本,新建一個(gè)文本文件,將文件名改為Hello.java,在文件中鍵入如下內(nèi)容并保存:publicclassHello{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");}}第十二頁(yè),共八十一頁(yè)。Java源程序擴(kuò)展名為.java的源文件使用記事本進(jìn)行編輯第十三頁(yè),共八十一頁(yè)。使用javac編譯器編譯源文件接下來(lái)需要將源程序進(jìn)行編譯;進(jìn)入命令提示行,切換到源文件所在的目錄,執(zhí)行javac命令,使用javac編譯器編譯源文件;javac命令的格式是:javac完整的源文件名切換到源文件所在的目錄使用javac命令編譯源文件光標(biāo)閃爍表示語(yǔ)法無(wú)誤,順利通過(guò)編譯第十四頁(yè),共八十一頁(yè)。.class(字節(jié)碼)文件順利通過(guò)編譯后將生成一個(gè)擴(kuò)展名為.class的字節(jié)碼文件(類(lèi)描述文件)。擴(kuò)展名為.java的源文件通過(guò)編譯后生成的擴(kuò)展名為.class的字節(jié)碼文件第十五頁(yè),共八十一頁(yè)。使用java解釋器運(yùn)行字節(jié)碼文件進(jìn)入命令提示行,在字節(jié)碼文件所在的目錄下,執(zhí)行java命令,使用java解釋器運(yùn)行字節(jié)碼文件;java命令的格式是:java類(lèi)名稱(chēng)請(qǐng)注意:這里只需要類(lèi)名稱(chēng),而不是帶擴(kuò)展名的文件名。執(zhí)行java命令運(yùn)行字節(jié)碼文件程序運(yùn)行效果第十六頁(yè),共八十一頁(yè)。分析程序關(guān)鍵字class用來(lái)定義一個(gè)類(lèi),Hello是類(lèi)的名稱(chēng);在Java程序中,所有的語(yǔ)句都必須放在某個(gè)類(lèi)中;整個(gè)類(lèi)及其所有成員都包含在一對(duì)花括號(hào)中(即{和}之間),它們標(biāo)志著類(lèi)定義塊的開(kāi)始和結(jié)束。定義類(lèi)的一般語(yǔ)法:
class
類(lèi)名
{ …… }第十七頁(yè),共八十一頁(yè)。分析程序3-2程序必須從main函數(shù)開(kāi)始執(zhí)行;關(guān)鍵字public是訪問(wèn)修飾符,用來(lái)控制類(lèi)成員的可見(jiàn)范圍及作用域;關(guān)鍵字static允許在不創(chuàng)建類(lèi)的實(shí)例的情況下,調(diào)用main函數(shù);關(guān)鍵字void用來(lái)說(shuō)明main函數(shù)是沒(méi)有返回值的;args是字符串?dāng)?shù)組,用來(lái)從命令行接收參數(shù);main函數(shù)的一般形式如下:
public
static
voidmain(String[]args) { …… }第十八頁(yè),共八十一頁(yè)。分析程序String[]是字符串類(lèi)型的數(shù)組;在Java中,類(lèi)名稱(chēng)一般首字母大寫(xiě);使用System.out.println()將信息輸出到控制臺(tái)上,即打印出來(lái)。第十九頁(yè),共八十一頁(yè)。
常用Java命令◆
編譯一個(gè)java源文件●
$javac<options><sourcefiles>◆運(yùn)行java可運(yùn)行文件●
$java[-options]class[args...]◆
生成java注釋文檔●
$javadoc[options][packagenames][sourcefiles][@files]例:javadoc-dD:\java\dos-sourcepathD:\java
abstractMoreType.javajavadoc-dc:\doc-sourcepathc:\src-subpackagescom.liigo(遞歸所有com.liigo子包里的java文件)◆
生成一個(gè)jar包●
$jar{ctxu}[vfm0Mi][jar-file][manifest-file][-Cdirectory]files
...例:jar-cvfaa.jar-Cnews\.(把news文件夾里的文件整個(gè)打包)第二十頁(yè),共八十一頁(yè)。J2SE基礎(chǔ)語(yǔ)法標(biāo)識(shí)符數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型的轉(zhuǎn)換(主講四類(lèi)八種)運(yùn)算符條件語(yǔ)句、循環(huán)語(yǔ)句:if/for/while/do{}while()/break-continue/switch第二十一頁(yè),共八十一頁(yè)。標(biāo)識(shí)符命名規(guī)范Java語(yǔ)言中,為各種變量、方法和類(lèi)等起的名字稱(chēng)為標(biāo)識(shí)(identifier)。Java標(biāo)識(shí)符的命名規(guī)則:應(yīng)以字母、下劃線(_)、美元符($),數(shù)字組成,但不能以數(shù)字開(kāi)頭.Java標(biāo)識(shí)符大小寫(xiě)敏感,長(zhǎng)度無(wú)限制不能與關(guān)鍵字同名第二十二頁(yè),共八十一頁(yè)。Java的基礎(chǔ)類(lèi)型及常量Java的八種基礎(chǔ)類(lèi)型:》整型:byte、short、int(默認(rèn))、long》字符型:char》浮點(diǎn)型:float、double(默認(rèn))》布爾型:boolean(一般用于程序的流程控制)注:Java采用Unicode編碼(全球語(yǔ)言統(tǒng)一編碼),每個(gè)字符占兩個(gè)字節(jié),因此一個(gè)Char類(lèi)型的變量可以存放一個(gè)漢字(一個(gè)漢字占兩個(gè)字節(jié))第二十三頁(yè),共八十一頁(yè)。Java的基礎(chǔ)類(lèi)型及常量長(zhǎng)度表示范圍byte1字節(jié),8位-27~27-1short2字節(jié),16位-215~215-1int4字節(jié),32位-231~231-1long8字節(jié),64位-263~263-1float4字節(jié),32位大約為+/-3.403E38double8字節(jié)64位大約+/-1.798E308第二十四頁(yè),共八十一頁(yè)?;緮?shù)據(jù)類(lèi)型轉(zhuǎn)換boolean類(lèi)型不可轉(zhuǎn)換為其他類(lèi)型。整型,字符型,浮點(diǎn)型的數(shù)據(jù)在混合運(yùn)算中相互轉(zhuǎn)換遵循如下原則:》容量小的類(lèi)型自動(dòng)轉(zhuǎn)換為容量大的,數(shù)據(jù)類(lèi)型按容量大小排序如下:
>byte、short、char->int->long->float->double >bypt、short、char三者之間不互相轉(zhuǎn)換,三者參與運(yùn)算時(shí)先轉(zhuǎn)換為int類(lèi)型》容量大的在轉(zhuǎn)換為容量小的時(shí)候要加強(qiáng)制轉(zhuǎn)換符,但可能造成精度降低或溢出》浮點(diǎn)型常量默認(rèn)值為double類(lèi)型,整型常量默認(rèn)值為int類(lèi)型成員變量、局部變量、變量作用域在Java中,變量一旦聲明,就應(yīng)對(duì)其進(jìn)行初始化TestConvert.java第二十五頁(yè),共八十一頁(yè)?;緮?shù)據(jù)類(lèi)型轉(zhuǎn)換
inti=1,j;
floatf1=0.1;
floatf2=123;
longl1=12345678;
longl2=8888888888;
doubled1=2e20,d2=20;
byteb1=1,b2=2,b3=129;j=j+10;i=i/10;i=i*0.1;
byteb=b1-b2;
floatf3=f1+f2;
floatf4=f1+f2*0.1;
doubled=d1*i+j;
floatf=(float)(d1*5+d2);第二十六頁(yè),共八十一頁(yè)。Java數(shù)據(jù)類(lèi)型劃分圖數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型引用數(shù)據(jù)類(lèi)型類(lèi):class接口:interface浮點(diǎn)型:float、double整型:byte、short、int、long布爾型:boolean字符型:char數(shù)值型數(shù)組第二十七頁(yè),共八十一頁(yè)。運(yùn)算符:operatorJava語(yǔ)言支持的運(yùn)算符:》算術(shù)運(yùn)算符:+,-,*,/,%,++,--》關(guān)系運(yùn)算符:>,<,>=,<=,==,!=》邏輯運(yùn)算符:!,&,|,^,&&,||》位運(yùn)算符:&,^,|,~,>>,<<,>>>基本不用》賦值運(yùn)算符:=》擴(kuò)展賦值運(yùn)算符:+=,-=,*=,/=》字符串連接運(yùn)算符:+
注:++(--)在前時(shí)先計(jì)算后取值在后時(shí)先取值后計(jì)算intx=2;System.out.println(1+++x+2+x);?x=2;System.out.println(1+x+++2+x);?第二十八頁(yè),共八十一頁(yè)。邏輯運(yùn)算符邏輯運(yùn)算符:【!邏輯非】【&邏輯與】【|邏輯或】【^邏輯異與】【&&短路與】【||短路或】ab!aa&ba|ba^ba&&ba||btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalseTruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalsepublicstaticvoidmain(String[]args){booleana=true,b=false,c;c=!a;System.out.println(c);c=a^b;System.out.println(c);c=a|b;System.out.println(c);c=a&b;System.out.println(c);c=a||b;System.out.println(c);c=a&&b;System.out.println(c);}”^“邏輯異與:相同就為false,不同則為true|和||區(qū)別?&和&&區(qū)別?第二十九頁(yè),共八十一頁(yè)。字符串連接符“+”除用于加法運(yùn)算外,還可以用于字符串的連接inti=55+21;Strings=“wang”+“hz”;“+”運(yùn)算符兩側(cè)的操作數(shù)只要有一個(gè)字符串(String)類(lèi)型,系統(tǒng)就會(huì)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串類(lèi)型,然后連接:
inti=12; System.out.println(“wanghz”+i);
輸出結(jié)果:wanghz12Strings1=10+2+”qing”Strings2=“qing”+10+2s1和s2的輸出結(jié)果會(huì)是什么?注:System.out.println(value);中的value無(wú)論是何類(lèi)型,都會(huì)先轉(zhuǎn)為字符型,然后打印第三十頁(yè),共八十一頁(yè)。if條件語(yǔ)句條件語(yǔ)句格式:if…if…else…if…elseif…if…elseif…elseif…else…只有一句要執(zhí)行的語(yǔ)句時(shí){}可以省略但是建議不要去
if(表達(dá)式1){
語(yǔ)句塊1}elseif(表達(dá)式2){語(yǔ)句塊2}else{語(yǔ)句塊3}表達(dá)式語(yǔ)句塊falsetrueTestIf.java第三十一頁(yè),共八十一頁(yè)。循環(huán)控制語(yǔ)句For循環(huán)控制語(yǔ)句格式:
for(表達(dá)式1;boolean類(lèi)型的表達(dá)式2;表達(dá)式3){
語(yǔ)句塊
}注:continue和break區(qū)別?表達(dá)式1表達(dá)式2語(yǔ)句塊true表達(dá)式3falseTestFor.java課堂練習(xí)編寫(xiě)程序,用以個(gè)for循環(huán)計(jì)算1!+2!+3!+……+10!的值,并打印出計(jì)算結(jié)果。OddSum.java第三十二頁(yè),共八十一頁(yè)。while與do-whileWhile格式:
while(表達(dá)式){
語(yǔ)句塊
}do-while格式:
do{
語(yǔ)句塊
}while(表達(dá)式);表達(dá)式true語(yǔ)句塊false語(yǔ)句塊表達(dá)式truefalse兩者區(qū)別?WhileTest.java第三十三頁(yè),共八十一頁(yè)。循環(huán)語(yǔ)句舉例//輸出1—100內(nèi)前5個(gè)能被3整除的數(shù)public
classTest{public
static
voidmain(String[]args){intnum=0,i=1;while(i<=100){if(i%3==0){System.out.print(i+"");num++;}if(num==5){
break;}i++;}}}//輸出101—200內(nèi)的質(zhì)數(shù)public
classTest{public
static
voidmain(String[]args){for(inti=101;i<200;i+=2){booleanf=true;for(intj=2;j<i;j++){if(i%j==0){f=false;
break;}}if(!f){
continue;}System.out.print(i+"");}}}第三十四頁(yè),共八十一頁(yè)。Switch條件控制Switch格式:
switch(表達(dá)式){case表達(dá)式1:
語(yǔ)句塊1break;case表達(dá)式2:
語(yǔ)句塊2break;default:(可有可無(wú))
語(yǔ)句塊3break;}小心case穿透,推薦使用break語(yǔ)句多個(gè)case可以合并到一起default可以省略,但不推薦省略注:表達(dá)式必須是int類(lèi)型的(byte,short,char,int),break語(yǔ)句穿透問(wèn)題SwitchTest.java第三十五頁(yè),共八十一頁(yè)。方法Java中的方法類(lèi)似于其他語(yǔ)言的函數(shù),是一段用來(lái)完成特定功能的代碼片段,聲明格式:[修飾符1修飾符2..]返回值類(lèi)型方法名(形式參數(shù)列表){Java語(yǔ)句}Sample:publicStringgetName(Stringname){return“name=”+name;}形式參數(shù):在方法被調(diào)用時(shí),用于接收外界輸入的數(shù)據(jù)。實(shí)參:調(diào)用方法時(shí),實(shí)際傳給方法的數(shù)據(jù)。返回值:方法在執(zhí)行完畢后返還給調(diào)用它的環(huán)境的數(shù)據(jù)。返回值類(lèi)型:事先約定的返回值的數(shù)據(jù)類(lèi)型,如無(wú)返回值,必須給出返回值類(lèi)型voidJava語(yǔ)言中使用下述形式調(diào)用方法:對(duì)象名.方法名(實(shí)參列表)實(shí)參的數(shù)目、數(shù)據(jù)類(lèi)型和次序必須和所調(diào)用方法聲明的形參列表匹配return語(yǔ)句終止方法的運(yùn)行,并指定要返回的數(shù)據(jù)返回值類(lèi)型:事先約定的返回值的數(shù)據(jù)類(lèi)型,如無(wú)返回值,必須給出返回值類(lèi)型voidTestFuncation.java第三十六頁(yè),共八十一頁(yè)?;菊Z(yǔ)法總結(jié)標(biāo)識(shí)符數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型的轉(zhuǎn)換(主講四類(lèi)八種)運(yùn)算符條件語(yǔ)句、循環(huán)語(yǔ)句:if/for/while/do{}while()/break-continue/switch第三十七頁(yè),共八十一頁(yè)。面向?qū)ο箢?lèi)與對(duì)象對(duì)象在內(nèi)存中的解析方法的重載(overload)關(guān)鍵字:this、static、以及他們與類(lèi)之間的關(guān)系package和import語(yǔ)句繼承訪問(wèn)控制符多態(tài)第三十八頁(yè),共八十一頁(yè)。類(lèi)與對(duì)象類(lèi):具有相同屬性和功能的一類(lèi)事物(屬性和方法的集合)。抽象:對(duì)具有相同屬性和方法的一類(lèi)事物的描述過(guò)程就叫抽象,抽象的結(jié)果就是類(lèi)。對(duì)象:類(lèi)的一個(gè)實(shí)例,對(duì)象是組成類(lèi)的元素。第三十九頁(yè),共八十一頁(yè)。類(lèi)的定義類(lèi)定義的格式:[修飾符]class類(lèi)名
{
類(lèi)體代碼
}類(lèi)的定義主要有兩部分組成:成員變量和方法//用class關(guān)鍵字定義類(lèi),例如:classPerson{//成員變量定義
privateintid=1;privateintage=20;//定義方法
publicintgetId(){returnid;}
publicintgetAge(){returnage;}publicvoidsetAge(inti){age=i;}}第四十頁(yè),共八十一頁(yè)。對(duì)象的創(chuàng)建Java語(yǔ)言中除基本數(shù)據(jù)類(lèi)型之外的變量類(lèi)型都稱(chēng)之為引用類(lèi)型。Java中的對(duì)象是通過(guò)引用對(duì)其操作的。例如://聲明了一個(gè)Person類(lèi)型的變量,但并沒(méi)//有使它指向一個(gè)對(duì)象。Personp;//使用new語(yǔ)句創(chuàng)建了一個(gè)Person類(lèi)型的對(duì)象,并用p指向它,以后可以通過(guò)p完成對(duì)它的操作。p=newPerson();p=nullstackheapPersonp;p=newPerson();pid:1age:20第四十一頁(yè),共八十一頁(yè)。方法的調(diào)用
classPerson{//成員變量定義
privateintid;privateintage=20;//定義方法
publicintgetId(){returnid;}
publicintgetAge(){returnage;}publicvoidsetAge(inti){age=i;}
}publicclassTest{publicstaticvoidmain(String[]args){
Personp=newPerson();p.setAge(34);intage=p.getAge();System.out.println(age);}}使用對(duì)象引用.方法名(參數(shù)列表)來(lái)調(diào)用對(duì)象的方法。第四十二頁(yè),共八十一頁(yè)。封裝性類(lèi)的封裝性:即不能讓外面的類(lèi)隨意修改一個(gè)類(lèi)的成員變量在定義一個(gè)類(lèi)的成員(包括變量和方法),使用private關(guān)鍵字說(shuō)明這個(gè)成員的訪問(wèn)權(quán)限,只能被這個(gè)類(lèi)的其他成員方法調(diào)用,而不能被其他的類(lèi)中的方法所調(diào)用;
為實(shí)現(xiàn)封裝性,常將類(lèi)的成員變量聲明為private,再通過(guò)public的方法來(lái)對(duì)這個(gè)變量進(jìn)行訪問(wèn)。對(duì)一個(gè)變量的操作,一般都有
讀取和賦值操作,我們一般定義兩個(gè)方法來(lái)實(shí)現(xiàn)這兩種操作,即:getXxx()與setXxx();
一個(gè)類(lèi)就是一個(gè)模塊,我們應(yīng)該讓模塊僅僅公開(kāi)必須要讓外界知道的內(nèi)容,而隱藏其他的一切內(nèi)容。再進(jìn)行程序設(shè)計(jì)時(shí),應(yīng)盡量避免一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù),模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚(許多功能盡量在類(lèi)的內(nèi)部獨(dú)立完成,不讓外面干預(yù)),弱耦合(提供給外部盡量少的方法調(diào)用)。第四十三頁(yè),共八十一頁(yè)。構(gòu)造方法類(lèi)內(nèi)部一種特殊的方法,創(chuàng)建對(duì)象時(shí)所調(diào)用的方法。使用new+構(gòu)造方法名創(chuàng)建一個(gè)新的對(duì)象。構(gòu)造方法是定義在java類(lèi)中的一個(gè)用來(lái)初始化對(duì)象的方法。構(gòu)造方法沒(méi)有返回值類(lèi)型,它與其他的方法在此處不同構(gòu)造方法的方法名與類(lèi)名完全相同classPerson{//成員變量定義intid;intage=20;Person(inti,intn){
id=i;age=n;
}第四十四頁(yè),共八十一頁(yè)。構(gòu)造方法創(chuàng)建對(duì)象時(shí),使用構(gòu)造方法初始化對(duì)象的成員變量。
publicclassTest{publicstaticvoidmain(String[]args){//創(chuàng)建對(duì)象Persontom=newPerson(1,25);Personjack=newPerson(2,20);}}tomstackjack125220heap第四十五頁(yè),共八十一頁(yè)。構(gòu)造方法每個(gè)類(lèi)都至少有一個(gè)構(gòu)造方法,如果我們沒(méi)有顯示的聲明,JVM會(huì)在加載該類(lèi)時(shí)為其添加一個(gè)public的無(wú)參的構(gòu)造方法:類(lèi)名(){}例如:classPoint{intx;inty;}….main…{Pointp=newPoint();}第四十六頁(yè),共八十一頁(yè)。課堂練習(xí)定義一個(gè)點(diǎn)(point)類(lèi)用來(lái)表示三維空間中的點(diǎn)(有三個(gè)坐標(biāo))。要求如下:1.可以生成具有特定坐標(biāo)的點(diǎn)對(duì)象2.提供可以設(shè)置三個(gè)坐標(biāo)的方法3.提供可以計(jì)算該”點(diǎn)”到原點(diǎn)距離平方的方法4.編寫(xiě)程序驗(yàn)證上面三點(diǎn)TestPoint.java第四十七頁(yè),共八十一頁(yè)。方法的重載方法的重載是指一個(gè)類(lèi)中可以定義有相同的名字,但參數(shù)不同的多個(gè)方法。調(diào)用時(shí)會(huì)根據(jù)不同的參數(shù)表選擇對(duì)應(yīng)的方法。判斷方法重載的依據(jù):1、在同一個(gè)類(lèi)內(nèi)2、方法名相同3、參數(shù)的類(lèi)型不同,或者參數(shù)的個(gè)數(shù)不同,或者參數(shù)的排列順序不同4、方法的返回值的不同不能作為判斷方法重載的依據(jù),僅僅是返回值的不同,就造成了方法的重名,會(huì)報(bào)錯(cuò)。TestOverLoad.java第四十八頁(yè),共八十一頁(yè)。構(gòu)造方法的重載與普通方法一樣,構(gòu)造方法也可以重載例如:Person類(lèi)的構(gòu)造方法classPerson{intid;intage;publicPerson(){ id=1; age=20}publicPerson(intm){ id=m; age=20;}publicPerson(intm,intn){ id=m; age=n;}}課堂練習(xí):利用Person類(lèi),編寫(xiě)程序,分別用三種構(gòu)造方法創(chuàng)建三個(gè)Person對(duì)象,如下圖所示:p1p2p3120220536第四十九頁(yè),共八十一頁(yè)。關(guān)鍵字this在類(lèi)的方法中使用。This:當(dāng)前對(duì)象的一個(gè)引用,指向它自己,在類(lèi)的內(nèi)部使用。有時(shí)使用this可以處理方法中成員變量和參數(shù)重名的情況。
TestThis.javathisheap第五十頁(yè),共八十一頁(yè)。關(guān)鍵字static
在類(lèi)中,用static聲明的成員變量為靜態(tài)成員變量,它為該類(lèi)的公用變量,在第一次使用時(shí)被初始化,對(duì)于該類(lèi)的所有對(duì)象來(lái)說(shuō),static成員變量該變量只有一份,保存在內(nèi)存的datasegment中。用static聲明的方法,表示該方法為靜態(tài)方法,在調(diào)用方法時(shí),不會(huì)將對(duì)象的引用傳遞給它,所以在static方法中,不能直接調(diào)用非靜態(tài)的成員變量或非靜態(tài)的方法。可以直接通過(guò)類(lèi)名.靜態(tài)方法名調(diào)用。可以通過(guò)對(duì)象、引用或類(lèi)名(不需要實(shí)例化)訪問(wèn)靜態(tài)成員。TestStatic.javaTestFuncation.java第五十一頁(yè),共八十一頁(yè)。package和import語(yǔ)句為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類(lèi),解決類(lèi)的命名沖突問(wèn)題,java引入包(package)機(jī)制。package語(yǔ)句作為java源文件的第一條語(yǔ)句,指定該文件中定義的類(lèi)所在的包。它的格式為:packagepkg1[.pkg2[.pkg3…]];Java編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄管理,package語(yǔ)句中,用‘.’來(lái)指明包的層次,例如使用語(yǔ)句:packagecom.test;則該文件中所有的類(lèi)位于.\com\test目錄下TestPackage.java第五十二頁(yè),共八十一頁(yè)。繼承子類(lèi)通過(guò)繼承獲得基類(lèi)的所有屬性(包括私有的)及方法。在創(chuàng)建子類(lèi)對(duì)象時(shí),可以通過(guò)子類(lèi)對(duì)象調(diào)用基類(lèi)的方法和訪問(wèn)除去私有的一切成員變量。繼承提高了代碼的復(fù)用性。子類(lèi)可以擴(kuò)展基類(lèi)的方法及屬性。子類(lèi)對(duì)象的創(chuàng)建伴隨著父類(lèi)對(duì)象的創(chuàng)建TestExtends.java(內(nèi)存分析)ageageAnimalcolorCat第五十三頁(yè),共八十一頁(yè)。訪問(wèn)權(quán)限控制訪問(wèn)控制本類(lèi)同一包中的類(lèi)其他包中子類(lèi)其他包中的類(lèi)publicprotected×缺省××private×××Java權(quán)限修飾符public、private、protected置于類(lèi)的成員定義前,用來(lái)限定其它對(duì)象對(duì)該類(lèi)對(duì)象成員的訪問(wèn)權(quán)限。
對(duì)于class的權(quán)限修飾只可以用public和default。public類(lèi)可以在任何地方被訪問(wèn)。default類(lèi)只可以被同一個(gè)包內(nèi)的類(lèi)訪問(wèn)。
TestAccess.java第五十四頁(yè),共八十一頁(yè)。繼承中的權(quán)限控制classParent{privateintn_private=1;intn_default=2;protectedintn_protected=3;publicintn_public=4;}classChildextendsParent{publicvoidf(){
n_private=10;//errorn_default=20;n_protected=30;n_public=40;}}第五十五頁(yè),共八十一頁(yè)。課堂練習(xí)編寫(xiě)一個(gè)Computer
類(lèi),提供加(add)、減(reduce)、乘(sheng)、除(div)方法。SubComputer類(lèi),繼承Computer
類(lèi),提供取余(mod)、求平方(square)、立方(cube)方法。TestComputer.java第五十六頁(yè),共八十一頁(yè)。方法的重寫(xiě)在子類(lèi)中可以根據(jù)需要對(duì)從基類(lèi)中繼承來(lái)的方法進(jìn)行重寫(xiě)。重寫(xiě)方法必須和被重寫(xiě)方法具有相同方法名稱(chēng)、參數(shù)列表和返回類(lèi)型。重寫(xiě)方法的訪問(wèn)權(quán)限不能比被重寫(xiě)方法的低。TestOverride.java第五十七頁(yè),共八十一頁(yè)。super關(guān)鍵字在子類(lèi)中可以使用super關(guān)鍵字來(lái)引用基類(lèi)的成分,例如:classFatherClass{publicintvalue;publicvoidf(){value=100;System.out.println(“FatherClass.value=”+value);}}classChildClassextendsFatherClass{publicintvalue;publicvoidf(){super.f();//這里的super可以省略嗎?value=200;System.out.println(“ChildClass.value=”+value);System.out.println(“super.value=”+super.value);}}………….main………….ChildClasscc=newChildClass();s.f();第五十八頁(yè),共八十一頁(yè)。thissupervalue:200value:100cc第五十九頁(yè),共八十一頁(yè)。super關(guān)鍵字classPerson{ publicstaticvoidprt(Strings) {System.out.println(s);} Person(){prt("APerson.");} Person(Stringname){prt("Apersonnameis:"+name);}}publicclassChineseextendsPerson{ Chinese(){
super();//調(diào)用父類(lèi)構(gòu)造函數(shù)(1),必須寫(xiě)在第一行
prt("Achinese.");} Chinese(Stringname){
super(name);//調(diào)用父類(lèi)具有相同形參的構(gòu)造函數(shù)(2)
prt("hisnameis:"+name);} Chinese(Stringname,intage){ this(name);//調(diào)用當(dāng)前具有相同形參的構(gòu)造函數(shù)(3)
prt("hisageis:"+age);} publicstaticvoidmain(String[]args){ Chinesecn=newChinese(); cn=newChinese("kevin"); cn=newChinese("kevin",22);}}第六十頁(yè),共八十一頁(yè)。課堂練習(xí)創(chuàng)建一個(gè)僅有一個(gè)非缺省構(gòu)造器的基類(lèi),并創(chuàng)建一個(gè)帶有缺省構(gòu)造器和非缺省構(gòu)造器的導(dǎo)出類(lèi)。在導(dǎo)出類(lèi)的構(gòu)造器中調(diào)用基類(lèi)的構(gòu)造器。第六十一頁(yè),共八十一頁(yè)。關(guān)鍵字finalfinal修飾類(lèi),表示該類(lèi)是不能被繼承的;final修飾成員變量,表示該變量為常量,值不可以被修改,變量名一般采用大寫(xiě)字母,字母之間通過(guò)下劃線連接;final修飾方法,表示該方法不能被重寫(xiě),但是可以使用一般final和static一起用,當(dāng)類(lèi)被多次創(chuàng)建時(shí),只創(chuàng)建一次變量,可以節(jié)約內(nèi)存。第六十二頁(yè),共八十一頁(yè)。classAnimal{
publicStringname;Animal(Stringname){
=name;}}classCatextendsAnimal{
publicStringeyesColor;Cat(Stringn,Stringc){
super(n);
this.eyesColor=c;}}classDogextendsAnimal{
publicStringfurColor;Dog(Stringn,Stringc){
super(n);
this.furColor=c;}}多態(tài)第六十三頁(yè),共八十一頁(yè)。publicclassTest{ publicstaticvoidmain(String[]args) { Testtest=newTest(); Animala=newAnimal("name"); Catc=newCat("catName","blue"); Dogd=newDog("dogName","black"); test.f(a); test.f(c); test.f(d); }publicvoidf(Animala){ System.out.println("name:"+); if(ainstanceofCat){ Catcat=(Cat)a; System.out.println(""+cat.eyesColor+"eyes"); }elseif(ainstanceofDog){ Dogdog=(Dog)a; System.out.println(""+dog.furColor+"fur"); } }}多態(tài)第六十四頁(yè),共八十一頁(yè)。多態(tài)TestPolymoph/Test.java多態(tài)是指在執(zhí)行期間(而非編譯期)判斷所引用對(duì)象的實(shí)際類(lèi)型,根據(jù)其實(shí)際的類(lèi)型調(diào)用其相應(yīng)的方法。上面例子中,根據(jù)Lady對(duì)象的成員變量Pet所引用的不同的實(shí)際類(lèi)型而調(diào)用相應(yīng)的enjoy方法。classBirdextendsAnimal{ privateStringfeatherColor; Bird(Stringn,Stringf){ super(n); this.featherColor=f; } publicvoidenjoy(){ System.out.println("鳥(niǎo)叫聲........."); }}publicclassTest{ publicstaticvoidmain(String[]args){Birdb=newBird(“birdname”,”green”); Ladyl3=newLady("l3",b); l3.myPetEnjoy(); }}1.要有繼承2.要有重寫(xiě)3.父類(lèi)引用指向子類(lèi)對(duì)象第六十五頁(yè),共八十一頁(yè)。課堂練習(xí)分析上面的程序,體會(huì)“多態(tài)特性”對(duì)于系統(tǒng)可擴(kuò)充性的重要性。利用多態(tài)性編程,實(shí)現(xiàn)求三角形,正方形和圓形面積。方法:抽象出一個(gè)共享父類(lèi),定義一函數(shù)為求面積的公共界面,再重新定義各形狀的求面積函數(shù)。在主類(lèi)中創(chuàng)建不同類(lèi)的對(duì)象,并求得不同形狀的面積。MianJi.java第六十六頁(yè),共八十一頁(yè)。抽象類(lèi)用abstract關(guān)鍵字來(lái)修飾一個(gè)類(lèi)時(shí),這個(gè)類(lèi)叫做抽象類(lèi);用abstract來(lái)修飾方法時(shí),該方法叫做抽象方法。含有抽象方法的類(lèi)必須被聲明為抽象類(lèi),抽象類(lèi)必須被繼承,抽象方法必須被重寫(xiě)。抽象類(lèi)不能被實(shí)例化。抽象方法只需聲明,不需要實(shí)現(xiàn)。TestAbstract.javaabstract
classAnimal{
privateStringname;Animal(Stringname){
=name;}
abstract
public
voidenjoy();}classCatextendsAnimal{
private
String
eyesColor;Cat(Stringn,Stringc){
super(n);
this.eyesColor=c;}
public
voidenjoy(){System.out.println("貓叫聲.........");}}第六十七頁(yè),共八十一頁(yè)。課堂練習(xí)創(chuàng)建一個(gè)基類(lèi),包含抽象方法print(),并在導(dǎo)出類(lèi)中將其實(shí)現(xiàn)。重載的版本中會(huì)打印基類(lèi)中定義的某個(gè)整型變量的值。在定義該變量時(shí),請(qǐng)賦予非零值。在基類(lèi)的構(gòu)造器中,可以調(diào)用這個(gè)方法?,F(xiàn)在,在main()方法中,創(chuàng)建一個(gè)導(dǎo)出類(lèi)對(duì)象,然后調(diào)用它的print()方法。解釋發(fā)生的情形。
第六十八頁(yè),共八十一頁(yè)。接口接口是(interface)是抽象方法和常量值的定義的集合。從本質(zhì)上講,接口是一種特殊的抽象類(lèi),這種抽象類(lèi)中只包含常量和方法的定義,而沒(méi)有變量和方法的實(shí)現(xiàn)。接口定義舉例:publicinterfacerunner{intid=1; publicvoidstart(); publicvoidrun(); publicvoidstop();}第六十九頁(yè),共八十一頁(yè)。接口特性多個(gè)無(wú)關(guān)的類(lèi)可以實(shí)現(xiàn)同一個(gè)接口。接口不能實(shí)例化。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)無(wú)關(guān)的接口。定義java類(lèi)的語(yǔ)法格式:
<modifier>class<name>[extends<superclass>][implements<interface>[,<interface>]…]{…..}接口中聲明屬性默認(rèn)為publicstaticfinal的,也只能是publicstaticfinal的;即使不寫(xiě),在編譯時(shí)會(huì)為其加上public
staticfinal。接口中只能定義抽象方法,而且這些方法默認(rèn)為public的,也只能是public的;接口可以繼承其他的接口,并添加新的屬性和方法。第七十頁(yè),共八十一頁(yè)。interfaceSinger{public
voidsing();public
voidsleep();}classStudentimplementsSinger{privateStringname;Student(Stringname){=name;}publicStringgetName(){returnname;}public
voidstudy(){System.out.println("studying");}public
voidsing(){System.out.println("studentissinging");}public
voidsleep(){System.out.println("studentissleeping");}}接口舉例第七十一頁(yè),共八十一頁(yè)。interfacePainter{public
voidpaint();public
voideat();}classTeacherimplementsSinger,Painter{privateStringname;Teacher(Stringname){=name;}publicStringgetName(){returnname;}public
voidteach(){System.out.println("teaching");}public
voidsing(){System.out.println("teacherissinging");}public
voidsleep(){System.out.println("teacherissleeping");}public
voidpaint(){System.out.println("teacherispainting");}public
voideat(){System.out.println("teacheriseating");}}第七十二頁(yè),共八十一頁(yè)。public
classTest{public
static
voidmain(String[]args){Singers1=newStudent("le");s1.sing();s1.sleep();Singers2=newTeacher("steven");
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年碎石運(yùn)輸企業(yè)財(cái)務(wù)管理合同模板3篇
- 2024貨車(chē)租賃合同范文
- 2024年版汽車(chē)零部件生產(chǎn)與供應(yīng)合同
- 2024建筑勞務(wù)給排水分包合同范本
- 2024建筑工地鋼筋原材料采購(gòu)與驗(yàn)收合同
- 2025年度新型建筑材料銷(xiāo)售合作合同范本3篇
- 2024食堂食材采購(gòu)與勞務(wù)承包合作協(xié)議3篇
- 2024飼料行業(yè)市場(chǎng)調(diào)研與數(shù)據(jù)分析服務(wù)合同范本3篇
- 2024校服采購(gòu)合同模板
- 2025年度電網(wǎng)接入與轉(zhuǎn)供電服務(wù)合同3篇
- 預(yù)應(yīng)力空心板計(jì)算
- 2024版珠寶鑒定技師勞動(dòng)合同范本3篇
- 中國(guó)能源展望2060(2025年版)
- 2024年年第三方檢測(cè)行業(yè)分析報(bào)告及未來(lái)五至十年行業(yè)發(fā)展報(bào)告
- 李四光《看看我們的地球》原文閱讀
- GA/T 1740.2-2024旅游景區(qū)安全防范要求第2部分:湖泊型
- 華為公司戰(zhàn)略發(fā)展規(guī)劃匯報(bào)
- 2025年社區(qū)工作者考試試題庫(kù)及答案
- 2025蛇年春節(jié)放假通知假期溫馨提示模板
- 采購(gòu)經(jīng)理年終述職報(bào)告
- 《陋室銘》(過(guò)關(guān)檢測(cè))(原卷版)-2024年中考語(yǔ)文課內(nèi)39篇文言文閱讀
評(píng)論
0/150
提交評(píng)論