![學(xué)習(xí)java靜態(tài)數(shù)據(jù)初始化_第1頁](http://file4.renrendoc.com/view/3d5c918c4ba23d078650bb49c9d996c7/3d5c918c4ba23d078650bb49c9d996c71.gif)
![學(xué)習(xí)java靜態(tài)數(shù)據(jù)初始化_第2頁](http://file4.renrendoc.com/view/3d5c918c4ba23d078650bb49c9d996c7/3d5c918c4ba23d078650bb49c9d996c72.gif)
![學(xué)習(xí)java靜態(tài)數(shù)據(jù)初始化_第3頁](http://file4.renrendoc.com/view/3d5c918c4ba23d078650bb49c9d996c7/3d5c918c4ba23d078650bb49c9d996c73.gif)
![學(xué)習(xí)java靜態(tài)數(shù)據(jù)初始化_第4頁](http://file4.renrendoc.com/view/3d5c918c4ba23d078650bb49c9d996c7/3d5c918c4ba23d078650bb49c9d996c74.gif)
![學(xué)習(xí)java靜態(tài)數(shù)據(jù)初始化_第5頁](http://file4.renrendoc.com/view/3d5c918c4ba23d078650bb49c9d996c7/3d5c918c4ba23d078650bb49c9d996c75.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Static 數(shù)據(jù)的初始化 ( 注意結(jié)合代碼調(diào)試?yán)斫?) : package ;class Bowl Bowl()Bowl(9);Bowl(int marker) Bowl( + marker + );static Bowl b6 = new Bowl(6);static Bowl b9 = new Bowl();void f(int marker) f( + marker + );class Table static Bowl b1 = new Bowl(1);Table() Table();b2.f(1);void f2(int marker) f2( + marker + );stati
2、c Bowl b2 = new Bowl(2);class Cupboard Bowl b3 = new Bowl(3);Bowl b10 = new Bowl();static Bowl b4 = new Bowl(4);Cupboard() Cupboard();b4.f(2);void f3(int marker) f3( + marker + );static Bowl b5 = new Bowl(5);public class StaticInitialization /static Bowl b7 = newBowl(7);/(1)public static void main(S
3、tring args) Creating new Cupboard() in main); new Cupboard();Creating new Cupboard() in main); new Cupboard();/t2.f2(1);/(2)/t3.f3(1);/(3)/static Bowl b8 =new Bowl(8);/(4)/static Table t2new Table();/(5)/static Cupboard t3 = new Cupboard();/(6) /:調(diào)試以上代碼,總結(jié)出以下結(jié)論:一、初始化的過程:總體來說順序?yàn)椋?static 初始化 - 非 stati
4、c 初 始化 - 執(zhí)行構(gòu)造函數(shù);二、代碼分析一:對現(xiàn)有代碼執(zhí)行結(jié)果如下:Creating new Cupboard() in mainBowl(6)Bowl(9)Bowl(4)Bowl(5)Bowl(3)Bowl(9)Cupboard()f(2)Creating new Cupboard() in mainBowl(3)Bowl(9)Cupboard()f(2)執(zhí)行過程:、 java 解釋器尋找 public class 類,加載 StaticInitialization 類;、尋找 StaticInitialization類中的 static 定義代碼段;這里因?yàn)?1) 、(4) 、(5)
5、、(6) 均加了注釋,所以 StaticInitialization 中 沒有 static 需要初始化 ;、進(jìn)入 main 函數(shù)中執(zhí)行代碼輸出 Creating new Cupboard() in main;、繼續(xù)執(zhí)行 new Cupboard(); ,注意初始化的順序是 static 初始化 - 非 static 初始化 - 執(zhí)行構(gòu)造函數(shù); 所以加載類Cupboard 后,首先尋找 Cupboard 類中的 static 代碼段 ; 發(fā)現(xiàn) static 段 是: static Bowl b4 = new Bowl(4); static Bowl b5 = new Bowl(5);同時發(fā)現(xiàn)有
6、 非 static 段 是: Bowl b3 = new Bowl(3);Bowl b10= new Bowl();按順序先執(zhí)行: static Bowl b4 = new Bowl(4); 初始化,因?yàn)槎?義的是 Bowl 類的實(shí)例,所以先 加載 Bowl 類 ,進(jìn)入 Bowl 類發(fā)現(xiàn)又 有 static 代碼段 static Bowl b6 = new Bowl(6);static Bowl b9 = new Bowl();然而 我們知道初始化 staticBowl b4 = new Bowl(4);需要調(diào)用 Bowl 的構(gòu)造函數(shù),但調(diào)用構(gòu)造函數(shù)之前必須將該類需要初始化的部分先進(jìn)行初始化,
7、 所以執(zhí)行到 這里就要先進(jìn)行 Bowl 類中的 static 代碼段的初始化, 之后才能調(diào)用 構(gòu)造函數(shù) Bowl(int marker)為 static Bowl b4 = new Bowl(4);進(jìn)行初始化。 于是 b6,b9 分別調(diào)用構(gòu)造函數(shù) Bowl(int marker),Bowl(), 輸出 Bowl(6) ,Bowl(9) ,完了之后, b4 調(diào)用 構(gòu)造函數(shù) Bowl ( int marker) 輸出 Bowl(4) , b4 初始化結(jié)束,返 回 Cupboard 類繼續(xù)執(zhí)行 ,初始化 b5, 輸出 Bowl(5) , 此時 Cupboard 類中 static 部分初始化完, 接
8、下來對非 static 部分初 始化,即對 b3 和 b10 初始化, 一樣的方法,加載 Bowl 類,發(fā)現(xiàn) static 字段在上面已經(jīng)初始化, 所以這里直接調(diào)用 Bowl 類的構(gòu)造函 數(shù),輸出 Bowl(3) ,Bowl(9) 。 至此 Cupboard 類中需要初始化 的部分已經(jīng)初始化完了, 所以放心大膽的 調(diào)用 Cupboard 類的構(gòu)造函數(shù),為 main 函數(shù)中代碼完成 new Cupboard(); 的實(shí)現(xiàn),輸出 Cupboard() ,f(2) 。程序執(zhí)行返回到 main 函數(shù),輸出:Creating new Cupboard() in main, 代碼 new Cupboard
9、(); 又一次出現(xiàn),這里實(shí)際上是想演示 static 只會初始化一次 ,而非 static 只要 創(chuàng)建了對象或調(diào)用了成員、成員函數(shù), 會進(jìn)行第二次初始化 ,于是可 以看到輸出結(jié)果并沒有再 輸出 Bowl(6) 、Bowl(9) 、 Bowl(4) 、 Bowl(5) ,而是輸出:Bowl(3) 、Bowl(9) 、Cupboard() 、f(2) 。 5、取消注釋( 1)、( 4 ),發(fā)現(xiàn)結(jié)果如下: Bowl(6)Bowl(9) Bowl(7) Bowl(8) Creating new Cupboard() in mainBowl(4) Bowl(5) Bowl(3) Bowl(9) Cupb
10、oard() f(2)Creating new Cupboard() in main Bowl(3)Bowl(9)Cupboard()f(2)可以看出輸出了 Bowl(7) 、 Bowl(8) ,這說明在 main() 函數(shù)執(zhí)行之 前,程序要先對 StaticInitialization 進(jìn)行檢查,如果有 static 部分, 則先初始化。6、再取消注釋( 2)、( 5 )輸出結(jié)果為:Bowl(6)Bowl(9)Bowl(7)Bowl(8)Bowl(1)Bowl(2)Table()f(1)Creating new Cupboard() in mainBowl(4)Bowl(5)Bowl(3)B
11、owl(9)Cupboard()f(2)Creating new Cupboard() in main7Bowl(3)Bowl(9)Cupboard()f(2)f2(1)在前面的基礎(chǔ)上又輸出了 Bowl(1) 、 Bowl(2) 、Table() 、 f(1) 。然 而我們看到當(dāng)沒有代碼static Table t2 = new Table();的時候 Table 類中的 static 部分沒有被初始化,這說明什么?static 初始化只有在必要的時候才會進(jìn)行。只有在創(chuàng)建了第一個Table 對象之后才會進(jìn)行初始化。總結(jié)如下: 初始化順序?yàn)椋杭虞d public StaticInitializat
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年地震波傳播模擬軟件企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 聲學(xué)基礎(chǔ)與音響設(shè)備設(shè)計(jì)考核試卷
- 2025-2030年數(shù)字化酒店管理系統(tǒng)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年手術(shù)室廢物處理設(shè)備行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 城際鐵路旅客運(yùn)輸與鄉(xiāng)村振興戰(zhàn)略考核試卷
- 原油加工工藝的模擬與優(yōu)化軟件考核試卷
- 噴槍在摩托車改裝剎車盤涂裝的應(yīng)用考核試卷
- 勘探設(shè)備在石墨礦勘查中的高效提取技術(shù)考核試卷
- 冷藏車運(yùn)輸與冷鏈物流行業(yè)市場發(fā)展風(fēng)險識別與控制考核試卷
- 中層大氣化學(xué)-氣候模式MACO-ECNU的研發(fā)及其應(yīng)用研究
- 機(jī)器狗:技術(shù)成熟性能優(yōu)越場景剛需放量在即2025
- 2025年村民代表會議講話稿(3篇)
- (一模)烏魯木齊地區(qū)2025年高三年級第一次質(zhì)量語文試卷(含答案)
- 2025開工大吉蛇年大吉開門紅模板
- 人教版小學(xué)英語單詞表(按首字母排列)
- GB/T 45006-2024風(fēng)電葉片用纖維增強(qiáng)復(fù)合材料拉擠板材
- 鍋爐、壓力容器制造質(zhì)量手冊含程序文件-符合TSG07-2019《許可規(guī)則》
- 邏輯思維訓(xùn)練500題(帶答案)
- 炎癥性腸病共識2024
- 《單片機(jī)應(yīng)用技術(shù)》課件第1章
- 《中等強(qiáng)國視域下韓國的“新南方政策”研究》
評論
0/150
提交評論