版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
javaBasicL4-classes&objectspart2javaBasic1課程目標了解java語言基本概念掌握java基本語法要素掌握java類和對象的使用掌握java中數(shù)組的使用掌握java日期和字符串類的使用掌握jdbc基本使用熟悉awt/swing界面元素及布局熟悉事件處理機制2本章目標掌握Object類的基本概念熟悉內(nèi)部類的使用了解匿名對象的使用掌握方法的運用技巧掌握關(guān)鍵字this、static、final、instanceof的作用與使用技巧3Object類在Java中,一切類都是繼承關(guān)系。如果一個類沒有指明繼承關(guān)系,則默認繼承Object類對于一個完整的類來將,應(yīng)該覆寫Object類的以下方法:
toString();對象打印時調(diào)用
equals();對象比較時調(diào)用
hashCode();4Object類使用toString()方法:classPersonextendsObject{Stringname="張三";intage=25;//覆寫Object類中的toString()方法
publicStringtoString(){return"我是:"++",今年:"+this.age+"歲";}}classTestToStringDemo2{publicstaticvoidmain(String[]args){Personp=newPerson();System.out.println(p);}}5Object類使用equals()方法:此方法用于比較對象是否相等。Object中equals()方法比較的是對象的地址,而String類中,覆寫了equals()方法,比較的對象的內(nèi)容。所以在開發(fā)中往往需要將equals()方法進行覆寫。范例:TestOverEquals1.javaTestOverEquals2.java6==操作符與equals方法==操作符與equals方法的區(qū)別:引用類型比較引用;基本類型比較值;equals()方法只能比較引用類型,"=="可以比較引用類型及基本類型;特例:當(dāng)用equals()方法進行比較時,對類File、String、Date及封裝類(WrapperClass)來說,是比較類型及內(nèi)容而不考慮引用的是否是同一個實例;用"=="進行比較時,符號兩邊的數(shù)據(jù)類型必須一致(可自動轉(zhuǎn)換的基本數(shù)據(jù)類型除外),否則編譯出錯;7==操作符與equals方法舉例classTestEquals{//請自行定義能滿足需要的MyDate類
publicstaticvoidmain(String[]args){
MyDatem1=newMyDate(24,3,2001);
MyDatem2=newMyDate(24,3,2001);
if(m1==m2){
System.out.println("m1==m2");
}else{
System.out.println("m1!=m2");
}
if(m1.equals(m2)){
System.out.println("m1isequaltom2");
}else{
System.out.println("m1isnotequaltom2");
}
m2=m1;
if(m1==m2){
System.out.println("m1==m2");
}else{
System.out.println("m1!=m2");
}
}}89內(nèi)部類在Java中,允許一個類的定義位于另一個類的內(nèi)部,前者稱為內(nèi)部類內(nèi)部類和外層封裝它的類之間存在邏輯上的所屬關(guān)系Innerclass一般用在定義它的類或語句塊之內(nèi),在外部引用它時必須給出完整的名稱。Innerclass的名字不能與包含它的類名相同;Innerclass可以使用包含它的類的靜態(tài)和實例成員變量,也可以使用它所在方法的局部變量;910內(nèi)部類舉例(1)classA{ privateints; publicclassB{ publicvoidmb(){ s=100; System.out.println("在內(nèi)部類B中s="+s); } } publicvoidma(){ Bi=newB(); i.mb(); }}publicclassTest{ publicstaticvoidmain(Stringargs[]){ Ao=newA(); o.ma(); }}1011內(nèi)部類演示(1)main棧內(nèi)存o0A類對象publicclassA{ privateints; publicclassB{ publicvoidmb(){ s=100;//Theinn
System.out.println(s); } } publicvoidma(){ Bi=newB(); i.mb(); }}publicclassTest{ publicstaticvoidmain(Stringa[]){ Ao=newA(); o.ma(); }}s堆內(nèi)存處內(nèi)存狀態(tài)1112內(nèi)部類演示(2)main棧內(nèi)存oB類對象0A類對象publicclassA{ privateints; publicclassB{ publicvoidmb(){ s=100;//Theinn
System.out.println(s); } } publicvoidma(){ Bi=newB(); i.mb(); }}publiccalssTest{ publicstaticvoidmain(Stringa[]){ Ao=newA(); o.ma(); }}smathisiA.this堆內(nèi)存處內(nèi)存狀態(tài)1213內(nèi)部類演示(3)main棧內(nèi)存oB類對象0A類對象publicclassA{ privateints; publicclassB{ publicvoidmb(){ s=100;//Theinn
System.out.println(s); } } publicvoidma(){ Bi=newB(); i.mb(); }}publiccalssTest{ publicstaticvoidmain(Stringa[]){ Ao=newA(); o.ma(); }}smathisimbthisA.this堆內(nèi)存處內(nèi)存狀態(tài)1314內(nèi)部類舉例(2)publicclassA{ privateints; publicclassB{ publicvoidmb(){ System.out.println(s); } }}publicclassTest{ publicstaticvoidmain(String[]args){ Aa=newA();
//創(chuàng)建一個依賴于a而存在的b A.Bb=a.newB();b.mb(); }}棧內(nèi)存aB類對象0A類對象sbthis堆內(nèi)存處內(nèi)存狀態(tài)mainmbA.this1415內(nèi)部類舉例(3)publicclassA{privateints=111;publicclassB{ privateints=222; publicvoidmb(ints){ System.out.println(s);//局部變量s System.out.println(this.s);//內(nèi)部類對象的屬性s System.out.println(Outer3.this.s);//外層類對象屬性s }}publicstaticvoidmain(Stringargs[]){ Aa=newA(); A.Bb=a.newB(); b.mb(333);}}1516內(nèi)部類特性Innerclass可以聲明為抽象類,因此可以被其它的內(nèi)部類繼承。也可以聲明為final的。和外層類不同,Innerclass可以聲明為private或protected;Innerclass可以聲明為static的,但此時就不能再使用外層封裝類的非static的成員變量;非static的內(nèi)部類中的成員不能聲明為static的,只有在頂層類或static的內(nèi)部類中才可聲明static成員;16匿名內(nèi)部類內(nèi)部類:在一個類的內(nèi)部還定義另一個類。匿名內(nèi)部類:在抽象類與接口的基礎(chǔ)上發(fā)展起來的。17再談方法方法的概念方法的聲明格式:
publicstatic返回值類型方法名稱(參數(shù)列表){[return返回值;]}對于返回值,可以是基本數(shù)據(jù)類型,也可以是引用類型,當(dāng)方法無返回值時,可用void聲明。方法名稱的命名規(guī)則:第一個單詞首字母小寫,之后每個單詞首字母大寫。18方法的使用
//以下的程序說明了方法的使用
publicclassTestJavamethod { publicstaticvoidmain(Stringargs[]) { doublenum; num=show_length(22,19); //輸入22與19兩個參數(shù)到show_length()里
System.out.println("對角線長度="+num); } publicstaticdoubleshow_length(intm,intn) { returnMath.sqrt(m*m+n*n); //返回對角線長度
} }19方法的重載概念:方法的名稱相同,但是參數(shù)的類型或個數(shù)不同。在同一個類中可以定義多個同名方法--overload
publicclassPrintStream{
publicvoidprintln(inti){……}
publicvoidprintln(floatf){……} publicvoidprintln(Strings){……}
}
重載方法的參數(shù)列表必須不同
重載方法的返回值類型可以相同,也可以不同20方法的重載
//以下程序說明了方法的重載操作
publicclassTestJavareload { publicstaticvoidmain(String[]args) { intint_sum; doubledouble_sum; int_sum=add(3,5); //調(diào)用有兩個參數(shù)的add方法
System.out.println("int_sum=add(3,5)的值是:"+int_sum); int_sum=add(3,5,6); //調(diào)用有三個參數(shù)的add方法
System.out.println("int_sum=add(3,5,6)的值是:"+int_sum); double_sum=add(3.2,6.5); //傳入的數(shù)值為doule類型
System.out.println("double_sum=add(3.2,6.5)的值是:"+double_sum); } publicstaticintadd(intx,inty) { returnx+y; } publicstaticintadd(intx,inty,intz) { returnx+y+z; } publicstaticdoubleadd(doublex,doubley) { returnx+y; } }21方法與數(shù)組
//一維數(shù)組作為參數(shù)來傳遞,這里的一維數(shù)組采用靜態(tài)方式賦值
publicclassTestJavachuanshuzu { publicstaticvoidmain(Stringargs[]) { intscore[]={7,3,8,19,6,22}; //聲明一個一維數(shù)組score largest(score); //將一維數(shù)組score傳入largest()方法中
} publicstaticvoidlargest(intarr[]) { inttmp=arr[0]; for(inti=0;i<arr.length;i++) if(tmp<arr[i]) tmp=arr[i]; System.out.println("最大的數(shù)="+tmp); } }2223關(guān)鍵字thisthis關(guān)鍵字在java中有以下概念:→調(diào)用類中的屬性:this.屬性→調(diào)用類中的方法:this.方法()→調(diào)用類中的構(gòu)造方法:this()→表示當(dāng)前對象:this2324this調(diào)用類中屬性
classPerson { privateStringname; privateintage; publicPerson(Stringname,intage) { =name; this.age=age; } publicStringtalk() { return"我是:"+name+",今年:"+age+"歲"; } } publicclassTestJavaThis { publicstaticvoidmain(String[]args) { Personp=newPerson("張三",25); System.out.println(p.talk()); } }2425this調(diào)用類中構(gòu)造方法
classPerson { Stringname; intage; publicPerson() { System.out.println("1.publicPerson()"); } publicPerson(Stringname,intage) { //調(diào)用本類中無參構(gòu)造方法
this(); =name; this.age=age; System.out.println("2.publicPerson(Stringname,intage)"); } } publicclassTestJavaThis1 { publicstaticvoidmain(String[]args) { newPerson("張三",25); } }2526this表示當(dāng)前對象
classPerson { Stringname; intage; Person(Stringname,intage) { =name; this.age=age; } booleancompare(Personp) { if(.equals()&&this.age==p.age) { returntrue; } else { returnfalse; } } } publicclassTestCompare { publicstaticvoidmain(String[]args) { Personp1=newPerson("張三",30); Personp2=newPerson("張三",30); System.out.println(pare(p2)?"相等,是同一人!":"不相等,不是同一人!"); } }2627關(guān)鍵字static在Java類中聲明變量、方法和內(nèi)部類時,可使用關(guān)鍵字static做為修飾符。static標記的變量或方法由整個類(所有實例)共享,如訪問控制權(quán)限允許,可不必創(chuàng)建該類對象而直接用類名加‘.’調(diào)用。static成員也稱類成員或靜態(tài)成員,如:類屬性、類方法、靜態(tài)方法等。27類屬性(classAttributes)
類屬性由該類的所有實例共享publicclassPerson{privateintid;publicstaticinttotal=0;publicPerson(){
total++; id=total;}}Person+total:int=0-id:intp1:Personid=1p2:Personid=2<<instanceOf>><<instanceOf>>28類屬性應(yīng)用舉例classPerson{privateintid;publicstaticinttotal=0;publicPerson(){
total++; id=total;}}publicclassOtherClass{publicstaticvoidmain(Stringargs[]){
Person.total=100; System.out.println(Person.total); Personc=newPerson(); System.out.println(Person.total);}}29類方法應(yīng)用舉例publicclassPerson{privateintid;privatestaticinttotal=0;publicstaticintgetTotalPerson(){ returntotal;}publicPerson(){ total++; id=total;}}publicclassTestPerson{publicstaticvoidmain(String[]args){ System.out.println("Numberoftotalis" +Person.getTotalPerson()); Personp1=newPerson(); System.out.println("Numberoftotalis" +Person.getTotalPerson());}}Theoutputis:Numberoftotalis0Numberoftotalis130靜態(tài)初始化在類的定義體中、方法的外部可包含static語句塊static語句塊僅在其所屬的類被載入時執(zhí)行一次static塊通常用于初始化化static(類)屬性classPerson{ publicstaticinttotal; static{ total=100;//為total賦初值 } ……//其它屬性或方法聲明}31靜態(tài)初始化舉例classPerson{ publicstaticinttotal; static{ total=100; System.out.println("instaticblock!"); }}publicclassTest{ publicstaticvoidmain(String[]args){ System.out.println("total="+Person.total); System.out.println("total="+Person.total); }}32Singleton設(shè)計模板 classSingle{ privatestaticSingleonlyone=newSingle(); privateStringname; publicstaticSinglegetSingle(){ returnonlyone; } privateSingle(){} } publicclassTestSingle{ publicstaticvoidmain(Stringargs[]){ Singles1=Single.getSingle(); Singles2=Single.getSingle(); if(s1==s2){ System.out.println("s1isequalstos2!"); } } }33主方法main()主方法聲明格式:publicstaticvoidmain(Stringargs[])public:表示最大權(quán)限,所有都可以訪問static:表示可以由類名稱直接調(diào)用void:主方法是一切的起點,所有表示無返回main:系統(tǒng)內(nèi)建的方法名稱。Stringargs[]:表示字符串?dāng)?shù)組,用于接收系統(tǒng)啟動參數(shù)34主方法main()
publicclassTestMain {
/* publ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園主題活動設(shè)計與家長溝通方案
- 督察系統(tǒng)設(shè)計方案及技術(shù)實現(xiàn)要點
- 各類疾病營養(yǎng)配餐指導(dǎo)方案
- 高校畢業(yè)生就業(yè)指導(dǎo)與準備方案
- 壓力管道定義及分類管理標準
- 建筑施工企業(yè)環(huán)保管理實施方案
- 公路施工質(zhì)量控制重點及措施
- 小學(xué)經(jīng)典歌曲簡譜教學(xué)課程設(shè)計
- 大學(xué)英語在線作業(yè)題目庫及批改標準
- 五年級下冊部編版古詩文填空訓(xùn)練
- 房屋租賃用于經(jīng)營合同(2025版)
- DB5101∕T 161-2023 公園城市鄉(xiāng)村綠化景觀營建指南
- 2024-2025學(xué)年湖北省武漢市江漢區(qū)七年級(下)期末數(shù)學(xué)試卷
- 重慶市2025年高考真題化學(xué)試卷(含答案)
- 工地材料管理辦法措施
- 感術(shù)行動培訓(xùn)課件
- 建筑工程生產(chǎn)管理培訓(xùn)
- 膿毒癥集束化治療更新
- 臥床老人口腔護理規(guī)范
- 村黨支部換屆工作報告
- JG/T 154-2003電動伸縮圍墻大門
評論
0/150
提交評論