版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
注:假如你的類里定義了一個或多個構(gòu)造方法,那么Java不提供默認的構(gòu)造方法.?上述例子2提供了構(gòu)造方法,下列創(chuàng)建對象是非法的: p1=newPoint();對象的內(nèi)存模型3、對象的內(nèi)存模型我們使用前面的例子1來說明對象的內(nèi)存模型.(1)聲明對象時的內(nèi)存模型.當用XiyoujiRenwuzhubajie類聲明一個變量zhubajie,即對象zhubajie時,如例子1中XiyoujiRenwuzhubajie;內(nèi)存模型如圖所示:聲明對象變量zhubajie后,zhubajie的內(nèi)存中還沒有任何數(shù)據(jù),我們稱這時zhubajie是一個空對象,空對象不能使用,由于它還沒有得到任何”實體”.必須再進行為對象分派內(nèi)存的環(huán)節(jié),即為對象分派實體(2)對象分派內(nèi)存后的內(nèi)存模型當系統(tǒng)見到zhubajie=newXiyoujiRenwu();時,就會做兩件事(a)為height,weight,head,ear,mouth,hand,foot各個變量分派內(nèi)存.即 XiyoujiRenwu類的成員變量被分派內(nèi)存空間.假如成員變量在聲明時沒有指定初值,那么,對于整型變量,默認初值是0,對于浮點型,默認初值是0.0,對于booean型,默認初值是false,對于引用型,默認初值是null.(b)給出一個信息,已保證這些變量是屬于對象zhubajie的,即這些內(nèi)存單元將由zhubajie操作(3)創(chuàng)建多個不同的對象 一個類通過使用new運算符可以創(chuàng)建多個不同的對象,這些對象將被分派不同的內(nèi)存空間,因此,改變其中一個對象的狀態(tài)不會影響其它對象的狀態(tài).?zhubajie=newXiyoujiRenwu();?sunwukong=newXiyoujiRenwu();4.3.2.使用對象對象不僅可以操作自己的變量改變狀態(tài),并且還擁有了使用創(chuàng)建它的那個類中的方法的能力,對象通過使用這些方法可以產(chǎn)生一定的行為.通過使用運算符”.”,對象可以實現(xiàn)對自己的變量訪問和方法的調(diào)用.(1)、對象操作自己的變量(對象的屬性) 對象創(chuàng)建之后,就有了自己的變量,即對象的實體.通過使用運算符”.”,對象可以實現(xiàn)對自己的變量的訪問.(2)、對象調(diào)用類中的方法--對象的功能 對象創(chuàng)建之后,可以使用運算符”.”調(diào)用創(chuàng)建它的類中的方法,從而產(chǎn)生一定的行為功能.?當對象調(diào)用類中的一個方法時,方法中的局部變量被分派內(nèi)存空間.方法執(zhí)行完畢,局部變量即刻釋放內(nèi)存.classStudent{ float(yī)math,english,sum;? floatf(floatk1,float(yī)k2){? sum=k1*math+k2*english;???returnsum;? }}publicclassExample{?publicstaticvoidmain(Stringargs[]){??Studentwanghong,lihong; wanghong=newStudent();? lihong=newStudent(); wanghong.math=60.0f;? wanghong.english=80f;??lihong.math=70.0f; lihong.english=90.0f;? wanghong.sum=wanghong.f(2.0f,2.0f);? lihong.sum=lihong.f(2.0f,2.0f);? System.out.println("lihongsum="+lihong.sum);??System.out.println("wanghongsum="+wanghong.sum);?}}4.3.3.對象的引用和實體?我們已經(jīng)知道,當用類創(chuàng)建一個對象時,類中的成員變量被分派內(nèi)存空間,這些內(nèi)存空間稱做該對象的實體,而對象中存放著引用,以保證實體由該對象操作使用.publicclassPoint{ intx,y; Point(inta,intb){ ?x=a; ?y=b; }?publicstaticvoidmain(Stringargs[]){?Pointp1=newPoint(12,16); Pointp2=newPoint(6,18);?p1=p2;?System.out.println(p1.x); System.out.println(p2.x); } }4.4static關(guān)鍵字4.4.1.實例變量和類變量的區(qū)別 在講述類的時候我們講過:類體的定義涉及成員變量的定義和方法的定義,并且成員變量又分為實例變量和類變量,用stat(yī)ic修飾的變量是類變量.那么類變量和實例變量有什么區(qū)別呢?我們已經(jīng)知道:一個類通過使用new運算符可以創(chuàng)建多個不同的對象,這些對象將被分派不同的內(nèi)存空間,現(xiàn)在再說得準確些就是:不同的對象的實例變量將被分派不同的內(nèi)存空間,假如類中的成員變量有類變量,那么所有的對象的這個類變量都分派給相同的一處內(nèi)存,改變其中一個對象的這個類變量會影響其它對象的這個類變量.?也就是說對象共享類變量.如classTakecare{?staticintx; inty; …….}classA{?TakecareA1=newTakecare(); TakecareA2=newTakecare();}A1.x=18這時假如輸出A1.x,A2.x的值,結(jié)果相同都是18見例子StaticTest.java當Java程序執(zhí)行時,類的字節(jié)碼文獻被加載到內(nèi)存,假如該類沒有創(chuàng)建對象,類的實例成員變量不會被分派內(nèi)存.但是,類中的類變量,在該類被加載到內(nèi)存時,就分派了相應(yīng)的內(nèi)存空間.假如該類創(chuàng)建對象,那么不同對象的實例變量互不相同,即分派不同的內(nèi)存空間,而類變量不再重新分派內(nèi)存,所有的對象共享類變量,即所有的對象的類變量是相同的一處內(nèi)存空間,類變量的內(nèi)存空間直到程序退出運營,才釋放所占有的內(nèi)存.4.4.2.通過類名直接訪問類變量?類變量在類的字節(jié)碼加載到內(nèi)存時就分派了內(nèi)存空間,并且被所有的對象共享,因此,Java語言允許通過類名直接訪問類變量.classStat(yī)ictest2{ staticinta=1;}classPoint{?publicstaticvoidmain(Stringargs[]){ intc=Statictest2.a;?System.out.println(c); }}4.4.3.實例方法和類方法的區(qū)別?當類的字節(jié)碼文獻被加載到內(nèi)存時,類的實例方法不會被分派入口地址,當該類創(chuàng)建對象后,類中的實例方法才分派入口地址,從而實例方法可以被類創(chuàng)建的任何對象調(diào)用執(zhí)行.需要注意的是,當我們創(chuàng)建第一個對象時,類中的實例方法就分派了入口地址,當再創(chuàng)建對象時,不再分派入口地址,也就是說,方法的入口地址被所有的對象共享,當所有的對象都不存在時,方法的入口地址才被取消.對于類中的類方法,在該類被加載到內(nèi)存時,類方法就分派了相應(yīng)的入口地址.從而類方法不僅可以被類創(chuàng)建的任何對象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用.類方法的入口地址直到程序退出才被取消.無論是類方法或?qū)嵗椒?當被調(diào)用執(zhí)行時,方法中的局部變量才被分派內(nèi)存空間,方法調(diào)用完畢,局部變量即刻釋放所占的內(nèi)存.4.4.4.通過類名直接調(diào)用類方法 類方法在類的字節(jié)碼加載到內(nèi)存時就分派了入口地址,因此,Java語言允許通過類名直接調(diào)用類方法,而實例方法不能通過類名調(diào)用.在講述類的時候我們強調(diào)過,在Java語言中,類中的類方法不可以操作實例變量,也不可以調(diào)用實例方法,這是由于,在類創(chuàng)建對象之前,實例成員變量還沒有分派內(nèi)存,實例方法也沒有入口地址classA{?intx,y;//實例變量?stat(yī)icintz;//類變量 staticfloat(yī)f(inta){//類方法 } floa
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店管理晉升路徑
- 酒店管理工作目標
- All Touch移動信息化管理平臺介紹課件
- 2025-2030全球動畫工作室行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國超細玻璃棉行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球機器人電子皮膚行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國光伏增效膜行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國近紅外(NIR)超透鏡行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國3D感知數(shù)智化解決方案行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球數(shù)字布局軟件行業(yè)調(diào)研及趨勢分析報告
- 2025年新能源汽車銷售傭金返點合同范本6篇
- 2025-2030年中國配電變壓器市場未來發(fā)展趨勢及前景調(diào)研分析報告
- GB/T 45120-2024道路車輛48 V供電電壓電氣要求及試驗
- 2025年上海市嘉定區(qū)中考英語一模試卷
- 潤滑油、潤滑脂培訓課件
- 2025年中核財務(wù)有限責任公司招聘筆試參考題庫含答案解析
- 華中師大一附中2024-2025學年度上學期高三年級第二次考試數(shù)學試題(含解析)
- ADA糖尿病醫(yī)學診療標準指南修訂要點解讀(2025)課件
- 健康管理-理論知識復(fù)習測試卷含答案
- 成人腦室外引流護理-中華護理學會團體 標準
- JGJ106-建筑基樁檢測技術(shù)規(guī)范
評論
0/150
提交評論