JAVA面向?qū)ο蠡A(chǔ)_第1頁(yè)
JAVA面向?qū)ο蠡A(chǔ)_第2頁(yè)
JAVA面向?qū)ο蠡A(chǔ)_第3頁(yè)
JAVA面向?qū)ο蠡A(chǔ)_第4頁(yè)
JAVA面向?qū)ο蠡A(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、3 Sept. 2008 Neusoft Confidential第三章第三章 面向?qū)ο蠡A(chǔ)面向?qū)ο蠡A(chǔ)目標(biāo)目標(biāo): 介紹面向?qū)ο缶幊痰幕舅枷?,通過(guò)本課的學(xué)習(xí),應(yīng)該掌握介紹面向?qū)ο缶幊痰幕舅枷?,通過(guò)本課的學(xué)習(xí),應(yīng)該掌握如下知識(shí):如下知識(shí):1)理解什么是類、對(duì)象、構(gòu)造方法,)理解什么是類、對(duì)象、構(gòu)造方法,2)對(duì)象在內(nèi)存中的表現(xiàn)形式及如何使用對(duì)象等。)對(duì)象在內(nèi)存中的表現(xiàn)形式及如何使用對(duì)象等。3)Java的垃圾回收機(jī)制及訪問(wèn)修飾符。的垃圾回收機(jī)制及訪問(wèn)修飾符。本章要點(diǎn)本章要點(diǎn)類和對(duì)象的關(guān)系面向?qū)ο蟮乃枷胱宇悓?shí)例化的過(guò)程對(duì)象的創(chuàng)建構(gòu)造方法變量的初始化順序?qū)ο髣?chuàng)建的內(nèi)存模型垃圾回收機(jī)制Java中的關(guān)鍵

2、字this關(guān)鍵字static關(guān)鍵字主要內(nèi)容主要內(nèi)容類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系1構(gòu)造方法構(gòu)造方法2對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型3Java中的關(guān)鍵字中的關(guān)鍵字4類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系面向?qū)ο蟮乃枷耄嫦驅(qū)ο蟮乃枷耄?Object Oriented Programming,簡(jiǎn)稱,簡(jiǎn)稱OOP)面向?qū)ο蟮幕舅枷胧?,從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并在系統(tǒng)的構(gòu)造中盡可能運(yùn)用人類的自然思維方式面向?qū)ο蟾訌?qiáng)調(diào)運(yùn)用人類在日常的思維邏輯中經(jīng)常采用的思維方法與原則面向?qū)ο蟮娜齻€(gè)特征面向?qū)ο蟮娜齻€(gè)特征封裝繼承多態(tài)類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系面向?qū)ο笈c面向過(guò)程面向?qū)ο笈c面向過(guò)程publ

3、ic class Icebox static void putThings(String things) System.out.println(把冰箱門打開(kāi)); System.out.println(把+things+放進(jìn)來(lái)); System.out.println(把冰箱門關(guān)上); void OpenIcebox() printf(“把冰箱門打開(kāi)把冰箱門打開(kāi)n);void PutElephantI() printf(“把大象放冰箱把大象放冰箱n);void CloseIcebox() printf(“把冰箱們關(guān)上把冰箱們關(guān)上n);int main() OpenIcebox(); PutEle

4、phantIn(); CloseIcebox();public class Mine public static void main(String args ) Icebox.putThings(大象); 面向?qū)γ嫦驅(qū)ο笙竺嫦蜻^(guò)程面向過(guò)程類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義把相似的對(duì)象劃歸成一個(gè)類。在軟件設(shè)計(jì)中,類,就是一個(gè)模板,它定義了通用于一個(gè)特定種類的所有對(duì)象的屬性(變量)和行為(方法)。類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義 ?西游記游戲軟件中的游戲人物孫悟空:孫悟空的武器是金箍棒,戰(zhàn)斗力五顆星,耐力五顆星唐 僧:唐僧沒(méi)有武器,戰(zhàn)斗力為零,耐力五顆星豬八戒:豬八戒的武器是

5、耙子,戰(zhàn)斗力四顆星,耐力兩顆星沙 僧:沙僧的武器是月牙鏟 ,戰(zhàn)斗力三顆星,耐力四顆星類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義修飾符一般為public,也可以沒(méi)有修飾符。注意類名的命名規(guī)范。類名一般大寫類的成員:成員變量(屬性)成員函數(shù)(方法)通過(guò)“.”調(diào)用屬性和方法訪問(wèn)權(quán)限控制符 class 類名 類的成員 類的完全聲明形式類的完全聲明形式public abstract | final class 類名稱類名稱 extends 父類名稱父類名稱 implements 接口名稱列表接口名稱列表 變量成員聲明及初始化;變量成員聲明及初始化; 方法聲明及方法體;方法聲明及方法體;變量聲明格式變量

6、聲明格式public | protected | private public | protected | private staticstatic finaltransient volatile finaltransient volatile變量數(shù)據(jù)類型變量數(shù)據(jù)類型 變量名變量名1=1=變量初值變量初值, , 變量名變量名2=2=變量初值變量初值, , ; ;格式說(shuō)明格式說(shuō)明publicpublic、protectedprotected、private private 為訪問(wèn)控制符為訪問(wèn)控制符staticstatic指明這是一個(gè)靜態(tài)成員變量指明這是一個(gè)靜態(tài)成員變量finalfinal指明變量

7、的值不能被修改指明變量的值不能被修改transienttransient指明變量是臨時(shí)狀態(tài)指明變量是臨時(shí)狀態(tài)volatilevolatile指明變量是一個(gè)共享變量指明變量是一個(gè)共享變量類的方法聲明格式類的方法聲明格式:public|protected|privatestaticfinalabstractnativesynchronized 返回類型返回類型 方法名方法名(參數(shù)列表參數(shù)列表) throws exceptionList 方法體方法體; 格式說(shuō)明方法修飾public、protected、private 為存取控制符static指明方法是一個(gè)類方法final指明方法是一個(gè)終結(jié)方法abs

8、tract指明方法是一個(gè)抽象方法native用來(lái)集成java代碼和其它語(yǔ)言的代碼synchronized用來(lái)控制多個(gè)并發(fā)線程對(duì)共享數(shù)據(jù)的訪問(wèn)方法調(diào)用給對(duì)象發(fā)消息意味著調(diào)用對(duì)象的某個(gè)方法給對(duì)象發(fā)消息意味著調(diào)用對(duì)象的某個(gè)方法從對(duì)象中取得信息從對(duì)象中取得信息 修改對(duì)象的狀態(tài)或進(jìn)行某種操作修改對(duì)象的狀態(tài)或進(jìn)行某種操作 進(jìn)行計(jì)算及取得結(jié)果等進(jìn)行計(jì)算及取得結(jié)果等調(diào)用格式調(diào)用格式.(參數(shù)列表)(參數(shù)列表)稱點(diǎn)操作符稱點(diǎn)操作符“.”前面的前面的為消息的接收者為消息的接收者(receiver)參數(shù)傳遞參數(shù)傳遞值值傳遞:參數(shù)類型為基本數(shù)據(jù)類型時(shí)傳遞:參數(shù)類型為基本數(shù)據(jù)類型時(shí)引用傳遞:參數(shù)類型為對(duì)象類型或數(shù)組時(shí)引用

9、傳遞:參數(shù)類型為對(duì)象類型或數(shù)組時(shí)訪問(wèn)修飾符訪問(wèn)修飾符該類或非該類均該類或非該類均可訪問(wèn)可訪問(wèn)public只有該類可以訪只有該類可以訪問(wèn)問(wèn)private相同數(shù)據(jù)包中的相同數(shù)據(jù)包中的類可以訪問(wèn)類可以訪問(wèn)default該類及其子類的該類及其子類的成員可以訪問(wèn),成員可以訪問(wèn),同一個(gè)包中的類同一個(gè)包中的類也可訪問(wèn)也可訪問(wèn)protected訪問(wèn)修飾符訪問(wèn)修飾符訪問(wèn)修飾符可訪問(wèn)性位置位置private默認(rèn)默認(rèn)protected public同一個(gè)類同一個(gè)類是是是是是是是是同一個(gè)包內(nèi)的類同一個(gè)包內(nèi)的類否否是是是是是是不同包內(nèi)的子類不同包內(nèi)的子類否否否否是是是是不同包并且不是子不同包并且不是子類類否否否否否否是

10、是類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義Employee.javaclass Employee String name; int age; double salary; public String showName() System.out.println(name); return name; public int showAge() System.out.println(age); return age; public void updateName(String name2) name = name2; public void getSalary() System.out.prin

11、tln(The salary of this month is 2000); 屬性屬性方法方法類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義 練習(xí) Person.java定義一個(gè)Person類,Person類具有名字、年齡及性別等屬性,并具有一個(gè)getInfo( )方法可以打印出Person類的屬性, sayHello()方法和大家說(shuō)“Hello everybody!”類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義 練習(xí) Point.java 定義一個(gè)點(diǎn)類Point,包含兩個(gè)成員變量x、y分別表示x和y的坐標(biāo),一個(gè)movePoint(int dx,int dy)方法實(shí)現(xiàn)點(diǎn)的位置的移動(dòng)。public

12、 class Pointint x,y;void movePoint(int dx,int dy)x=dx; y=dy;類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類的定義類的定義 練習(xí) MyDate.java 定義一個(gè)點(diǎn)日期MyDate,包含三個(gè)成員變量year 、month、day分別表示年、月、日,以及每個(gè)屬性對(duì)應(yīng)的get和set方法(如,year有g(shù)etYear( )方法用來(lái)獲得日期的年份,還有setYear(int y)方法用來(lái)修改或設(shè)置日期的年份),最后還有printDate()方法,調(diào)用該方法可以把日期按照“yyyy-mm-dd”的形式輸出。類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系類和對(duì)象的關(guān)

13、系類(class) 是對(duì)某一類事物的描述對(duì)象(object) 是實(shí)際存在的某類事物的個(gè)體, 也稱為實(shí)例(instance)類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例。類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系對(duì)象的創(chuàng)建對(duì)象的創(chuàng)建語(yǔ)法格式示例 TestEmployee.java類名類名 對(duì)象名對(duì)象名 = new 構(gòu)造函數(shù)構(gòu)造函數(shù)Employee zhang = new Employee( )類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系對(duì)象的創(chuàng)建對(duì)象的創(chuàng)建 練習(xí) TestPerson.java在TestPerson類里寫一個(gè)main方法,在main( )方法中: 創(chuàng)建一個(gè)Person類的對(duì)象這個(gè)對(duì)象的名字叫小沈陽(yáng),年齡28,性別男在控

14、制臺(tái)中打印這個(gè)實(shí)例的信息并調(diào)用這個(gè)對(duì)象的sayHello( )方法,向大家問(wèn)好類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系對(duì)象的創(chuàng)建對(duì)象的創(chuàng)建 練習(xí) TestPoint.java在TestPoint類里寫一個(gè)main方法,在main( )方法中: 創(chuàng)建一個(gè)Point類的對(duì)象 這個(gè)點(diǎn)的坐標(biāo)是(3,2) 將這個(gè)點(diǎn)移動(dòng)到坐標(biāo)為(5,6)的位置并把移動(dòng)后的點(diǎn)的坐標(biāo)按“(x,y)”形式打印在控制臺(tái)上類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系對(duì)象的創(chuàng)建對(duì)象的創(chuàng)建 練習(xí) TestDate.java在TestDate類里寫一個(gè)main方法,在main( )方法中: 創(chuàng)建一個(gè)MyDate類的對(duì)象 通過(guò)setXXX方法將該日期對(duì)象的時(shí)間設(shè)置為

15、“2013年10月8日” 在控制臺(tái)上打印該對(duì)象的月份 把該日期對(duì)象按“2013-10-8”的格式輸出類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系匿名對(duì)象匿名對(duì)象創(chuàng)建完對(duì)象,在調(diào)用該對(duì)象的方法時(shí),也可以不定義對(duì)象的句柄,而直接調(diào)用這個(gè)對(duì)象的方法。這樣的對(duì)象叫匿名對(duì)象使用匿名對(duì)象的情況如果對(duì)一個(gè)對(duì)象只需要進(jìn)行一次方法調(diào)用new Person().sayHello()Person p1 = new Person();p1.sayHello();Contents類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系1構(gòu)造方法構(gòu)造方法2對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型3Java中的關(guān)鍵字中的關(guān)鍵字4構(gòu)造方法構(gòu)造方法構(gòu)造方法構(gòu)造方法(構(gòu)造函數(shù)

16、/構(gòu)造器,Constructor)具有與類相同的名稱不含返回值類型不能在方法中用return語(yǔ)句返回一個(gè)值一般訪問(wèn)權(quán)限為public 在一個(gè)類中,具有上述特征的方法就是構(gòu)造方法。構(gòu)造方法的作用構(gòu)造方法的作用完成對(duì)象的創(chuàng)建,即完成對(duì)象的實(shí)例化一般使用構(gòu)造方法來(lái)完成對(duì)成員變量的初始化 示例 TestPerson.java構(gòu)造方法構(gòu)造方法默認(rèn)的構(gòu)造方法默認(rèn)的構(gòu)造方法在Java中,每個(gè)類都至少要有一個(gè)構(gòu)造方法,如果程序員沒(méi)有在類里定義構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為這個(gè)類產(chǎn)生一個(gè)默認(rèn)的構(gòu)造方法一旦編程者為該類定義了構(gòu)造方法,系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法class Employee public Employee

17、( ) class Employee構(gòu)造方法構(gòu)造方法 練習(xí) 下列關(guān)于類的定義的選項(xiàng)中,哪些可以通過(guò)下列關(guān)于類的定義的選項(xiàng)中,哪些可以通過(guò)new Thing()方法來(lái)方法來(lái)創(chuàng)建該類的一個(gè)對(duì)象創(chuàng)建該類的一個(gè)對(duì)象_? A. public class Thing B. public class Thing public Thing() C. public class Thing D. public class Thing public Thing(void) public Thing(String s) E. public class Thing public void Thing() public

18、Thing(String s) 答案:A、B構(gòu)造方法構(gòu)造方法 練習(xí) 給定下列代碼的執(zhí)行結(jié)果是_? public class A void A() public static void main(String args) new A(); A. Class A B. 在第2行處拋出異常 C. 編譯錯(cuò)誤 D. 在第6行處拋出異常 E. 代碼執(zhí)行后沒(méi)有輸出答案:E構(gòu)造方法構(gòu)造方法類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系 練習(xí) XiyoujiRole.java構(gòu)造一個(gè)完整的西游記人物類,并定義一個(gè)構(gòu)造方法,通過(guò)這個(gè)方法可以創(chuàng)建不同的西游記人物,并寫一個(gè)main函數(shù)進(jìn)行驗(yàn)證。 孫悟空:孫悟空的武器是金箍棒,戰(zhàn)斗力五

19、顆星,耐力五顆星唐 僧:唐僧沒(méi)有武器,戰(zhàn)斗力為零,耐力五顆星豬八戒:豬八戒的武器是耙子,戰(zhàn)斗力四顆星,耐力兩顆星沙 僧:沙僧的武器是月牙鏟 ,戰(zhàn)斗力三顆星,耐力四顆星方法的重載方法的重載方法的重載(方法的重載(overload)函數(shù)的重載就是在同一個(gè)類中允許同時(shí)存在一個(gè)以上同名的函數(shù)方法重載的規(guī)則方法重載的規(guī)則函數(shù)名稱相同函數(shù)的參數(shù)必須不同參數(shù)個(gè)數(shù)不同 或參數(shù)類型不同函數(shù)的返回值類型可以相同,也可以不同方法的重載方法的重載方法的重載(方法的重載(overload)方法的重載方法的重載 練習(xí) 下列選項(xiàng)中,哪些可以與下列選項(xiàng)中,哪些可以與void setAge(int year,int month

20、,int day)方法在同一個(gè)類中定義方法在同一個(gè)類中定義_? A. public void setAge() B. void setAge(int age) C. void setAge(int y,int m,int d) D. int setAge(Date d) E. int setAge(int year,int month,int day) F. void setage(int year,int month,int dat)答案:ABDF方法的重載方法的重載 練習(xí) Person.java在上一個(gè)Person類的基礎(chǔ)上,完成以下功能:聲明一個(gè)有參的構(gòu)造方法,使得通過(guò)調(diào)用該構(gòu)造方法可以

21、對(duì)Person類的三個(gè)成員變量進(jìn)行初始化再聲明一個(gè)無(wú)參的構(gòu)造方法,實(shí)現(xiàn)構(gòu)造方法的重載方法的重載方法的重載 練習(xí) MethodAdd.java在類MethodAdd中,聲明三個(gè)方法add,分別計(jì)算兩個(gè)整數(shù)的和三個(gè)整數(shù)的和、兩個(gè)雙精度浮點(diǎn)數(shù)(double)數(shù)的和,并在該類寫一個(gè)主程序中調(diào)用這個(gè)三個(gè)函數(shù), 并將其結(jié)果打印Contents類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系1構(gòu)造方法構(gòu)造方法2對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型3Java中的關(guān)鍵字中的關(guān)鍵字4對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型引用類型變量引用類型變量除了8種基本數(shù)據(jù)類型的變量,其他變量都是引用類型變量類(class) 接口(interfac

22、e) 數(shù)組Person p ;Animal a ;int c ;對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型0 x80001.7444“l(fā)isi”Person p0 x8000nameageheightPerson p = new Person( “l(fā)isi”, 44, 1.74); 引用類型變量的內(nèi)存模型引用類型變量的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型0 x80000 x30001.7444“l(fā)isi”Person p0 x3000nameageheight1.7333“zhang”nameageheightPerson q0 x8000引用類型變量的內(nèi)存模型引用類型變量的內(nèi)存模型Pers

23、on p = new Person( “zhang”, 33,1.73);Person q = new Person( “l(fā)isi”, 44, 1.74);變量的作用域變量的作用域變量的作用域變量的作用域全局變量類體中聲明的成員變量為全局變量全局變量在類的整個(gè)生命周期中都有效局部變量方法體中聲明的變量,方法中的參數(shù),或代碼塊中聲明的變量,都是局部變量局部變量只在方法調(diào)用的過(guò)程中有效,方法調(diào)用結(jié)束后失效變量的作用域變量的作用域變量的作用域變量的作用域class Employee String name; int age; double salary; public String showName

24、() String hello = “你好你好”; System.out.println(hello+name); return name; public void updateName(String name2) name = name2; 全局變量全局變量局部變量局部變量變量的作用域變量的作用域變量初始化的順序變量初始化的順序隱式賦予變量默認(rèn)值成員變量顯式賦予初始值通過(guò)構(gòu)造方法體賦予新值 示例 PersianCat.java各類型變量默認(rèn)初始化值類型類型缺省值缺省值類型類型缺省值缺省值byte(byte)0charu0000 short(short)0float0.0Fint0double

25、0.0Dlong0L引用對(duì)象nullbooleanfalse變量的作用域變量的作用域 練習(xí) 給定下列代碼的執(zhí)行結(jié)果是_? public class X ( private static int a; public static void main(String args) modify(a); public static void modify(int a) a+; A. 0 B. 1 C. 編譯錯(cuò)誤 D. 運(yùn)行時(shí)異常答案:A程序執(zhí)行過(guò)程 硬盤硬盤 程序程序 .java 編譯編譯 .class 文件文件內(nèi)存內(nèi)存 執(zhí)行過(guò)程中的內(nèi)存管理執(zhí)行過(guò)程中的內(nèi)存管理代碼JVM系統(tǒng)代碼 裝載到內(nèi)存區(qū)裝載到內(nèi)存

26、區(qū)stackheapdata segmentcodesegment 找到找到main方法開(kāi)始執(zhí)行方法開(kāi)始執(zhí)行基本數(shù)據(jù)類型變量基本數(shù)據(jù)類型變量引用類型變量地址引用類型變量地址引用引用變量變量靜態(tài)變量靜態(tài)變量常量常量存放代碼存放代碼Java代碼在系統(tǒng)中的執(zhí)行過(guò)程補(bǔ)充:參數(shù)傳值補(bǔ)充:參數(shù)傳值當(dāng)方法被調(diào)用時(shí),如果方法有參數(shù),參數(shù)必須要實(shí)例化,當(dāng)方法被調(diào)用時(shí),如果方法有參數(shù),參數(shù)必須要實(shí)例化,即參數(shù)變量必須有具體的值。即參數(shù)變量必須有具體的值。public class Date /類聲明類聲明 int year,month,day; /成員變量,表示年、月、日成員變量,表示年、月、日 void setD

27、ate(int y,int m,int d) /成員方法,設(shè)置日期值成員方法,設(shè)置日期值 /無(wú)返回值,有無(wú)返回值,有4個(gè)參數(shù)個(gè)參數(shù) year = y; month = m; day = d; public static void main(String args) Date1 aday = new Date1() ; /創(chuàng)建對(duì)象創(chuàng)建對(duì)象 aday.setDate(2013,9,28); /調(diào)用類方法調(diào)用類方法 1基本數(shù)據(jù)類型基本數(shù)據(jù)類型參數(shù)的傳值參數(shù)的傳值值值這種數(shù)據(jù)傳遞方式被稱為是值傳遞,方法接收參數(shù)的值,但不能改變這些參數(shù)的值。2引用類型引用類型參數(shù)的傳值參數(shù)的傳值地址地址引用傳值方式引用

28、傳值方式:Java的引用類型數(shù)據(jù)包括對(duì)象、數(shù)組和接口對(duì)象、數(shù)組和接口,當(dāng)方法中參數(shù)是引用類型時(shí),引用數(shù)據(jù)類型傳遞給方法的是數(shù)據(jù)在內(nèi)存中的地址地址,方法中對(duì)參數(shù)變量的操作可以改變?cè)兞康闹怠?class People String face;void setFace(String s) face = s;class C void f(int x, double y, People p) x = x + 1;y = y + 1;p.setFace(笑臉笑臉);參數(shù)參數(shù)x和和y的值分別是的值分別是: + x + , + y);參數(shù)對(duì)象參數(shù)對(duì)象p的的face是是: + p.face);public c

29、lass Ep4_8 public static void main(String args) int m = 100;double n = 100.88;People zhang = new People();zhang.setFace(很嚴(yán)肅的樣子很嚴(yán)肅的樣子);C a = new C();a.f(m, n, zhang);方法中方法中m和和n的值仍然分別是的值仍然分別是: + m + , + n);方法中對(duì)象方法中對(duì)象zhang的的face是是: + zhang.face);zhang.face= 很嚴(yán)肅的樣子;改變形參值 導(dǎo)致實(shí)參值的改變zhang.face= “笑臉;參數(shù)x和y的值分

30、別是:101,101.88參數(shù)對(duì)象p的face是:笑臉main方法中m和n的值仍然分別是:100,100.88main方法中對(duì)象zhang的face是:笑臉補(bǔ)充內(nèi)容補(bǔ)充內(nèi)容對(duì)象數(shù)組對(duì)象數(shù)組在Java中不但可以聲明由原始數(shù)據(jù)組成的數(shù)組,還可以聲明由對(duì)象組成的數(shù)組;聲明對(duì)象數(shù)組的方式如:/假設(shè)已經(jīng)定義了一個(gè)假設(shè)已經(jīng)定義了一個(gè)Student類類/*聲明由聲明由5個(gè)個(gè)Student對(duì)象組成的數(shù)組對(duì)象組成的數(shù)組*/Student stdAry = new Student5;對(duì)象數(shù)組對(duì)象數(shù)組=引用數(shù)組引用數(shù)組錯(cuò)誤的理解方式錯(cuò)誤的理解方式學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例

31、學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例學(xué)生對(duì)象的實(shí)例01244堆堆棧棧stdAry堆堆棧棧stdAry正確的理解方式正確的理解方式對(duì)象的引用對(duì)象的引用01244對(duì)象的引用對(duì)象的引用對(duì)象的引用對(duì)象的引用對(duì)象的引用對(duì)象的引用對(duì)象的引用對(duì)象的引用對(duì)象數(shù)組示例對(duì)象數(shù)組示例/*對(duì)象數(shù)組示例,假設(shè)已經(jīng)定義了對(duì)象數(shù)組示例,假設(shè)已經(jīng)定義了Student類類*/public static void main(String args) /*創(chuàng)建包含有創(chuàng)建包含有5個(gè)個(gè)Student引用的數(shù)組引用的數(shù)組*/ Student stdAry = new Student5; /*逐一為每個(gè)引用創(chuàng)建對(duì)象實(shí)例

32、逐一為每個(gè)引用創(chuàng)建對(duì)象實(shí)例*/ stdAry0 = new Student(張三張三, 18); stdAry1 = new Student(李四李四, 20); stdAry2 = new Student(王五王五, 24); stdAry4 = new Student(鄭六鄭六, 21); stdAry4 = new Student(田七田七, 19); for (int i = 0; i stdAry.length; i+) stdAryi.display(); 對(duì)象數(shù)組的存放形式對(duì)象數(shù)組的存放形式堆堆棧棧stdAry0124stdAry0stdAry1stdAry2stdAry4std

33、Ary44張三張三18李四李四20王五王五24鄭六鄭六21田七田七19垃圾回收機(jī)制垃圾回收機(jī)制垃圾回收器(垃圾回收器(GC, Garbage Collection)Java的一個(gè)重要特點(diǎn)句是具有一個(gè)垃圾回收器,并且能夠自動(dòng)回收垃圾,這也是Java相對(duì)于其他語(yǔ)言有優(yōu)勢(shì)的地方對(duì)內(nèi)存的釋放和回收的工作是由Java運(yùn)行系統(tǒng)(JRE)承擔(dān)的,不用編程者關(guān)注在Java程序運(yùn)行過(guò)程中,一個(gè)垃圾回收器會(huì)不定時(shí)地被喚起檢查是否有不再被使用的對(duì)象,并釋放它們所占用的內(nèi)存空間垃圾回收器的啟用不由程序員控制,也無(wú)規(guī)律可循垃圾回收機(jī)制垃圾回收機(jī)制垃圾回收機(jī)制垃圾回收機(jī)制 System.gc( )、nullJava里提供

34、了一個(gè)System.gc( )方法,使用這個(gè)方法可以建議垃圾回收器回收垃圾在Java中,可以通過(guò)將對(duì)象的引用變量設(shè)置為null,來(lái)暗示垃圾回收器來(lái)回收該對(duì)象class Employee String name; int age; double salary;public static void main(String args) Employee e = new Employee(); new Employee(); e = null; System.gc(); 垃圾回收機(jī)制垃圾回收機(jī)制后臺(tái)線程后臺(tái)線程主線程主線程Object o2 = new Object( );o2 = null;Obje

35、ct o1 = new Object( );o1 objectThe heap檢查出對(duì)象沒(méi)有引用指向調(diào)用o2對(duì)象的finalize()方法垃圾回收機(jī)制回收分配給該對(duì)象的內(nèi)存垃圾回收采用Java多線程機(jī)制o2 object 垃圾回收機(jī)制垃圾回收機(jī)制垃圾回收機(jī)制垃圾回收機(jī)制 練習(xí) 什么時(shí)候程序會(huì)銷毀一個(gè)對(duì)象x_? A. x.delete() B. x.finalize() C. System.gc() D. 設(shè)置對(duì)象的引用為null F. 只有垃圾回收器才可以銷毀一個(gè)對(duì)象答案:FContents類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系1構(gòu)造方法構(gòu)造方法2對(duì)象創(chuàng)建的內(nèi)存模型對(duì)象創(chuàng)建的內(nèi)存模型3Java中的關(guān)鍵字中的關(guān)鍵字4Java中的關(guān)鍵字中的關(guān)鍵字this關(guān)鍵字關(guān)鍵字代表對(duì)象自身的引用一個(gè)引用指向調(diào)用該方法的當(dāng)前對(duì)象通常在類的方法定義中使用用用this關(guān)鍵字的情況關(guān)鍵字的情況方法中的變量與成員變量重名在一個(gè)構(gòu)造方法中,調(diào)用其它重載的構(gòu)造方法返回當(dāng)前對(duì)象的引用 成員變量和局部變量成員變量和局部變量public class Employee int sideA, sideB, sideC;void setSide

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論