




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java提高篇z數(shù)組(1):認(rèn)識(shí)java數(shù)組-編程 開發(fā)技術(shù)java提高篇之?dāng)?shù)組(1):認(rèn)識(shí)java數(shù) 組原文出處:chenssy噢,它明白了,河水既沒有牛伯伯說的那么 淺,也沒有小松鼠說的那么深,只有自己親 自試過才知道!道聽途說永遠(yuǎn)只能看到表明 現(xiàn)象,只有親自試過了,才知道它的深 淺! ! ! !一、什么是數(shù)組數(shù)組?什么是數(shù)組?在我印象中的數(shù)組是應(yīng)該這樣 的:通過new關(guān)鍵字創(chuàng)建并組裝他們,通過使用整形 索引值訪問它的元素,并且它的尺寸是不可變的!?但是這只是數(shù)組的最表面的東西!深一點(diǎn)?就 是這樣:數(shù)組是一個(gè)簡(jiǎn)單的復(fù)合數(shù)據(jù)類型,它是一系 列有序數(shù)據(jù)的集合,它當(dāng)中的每一個(gè)數(shù)據(jù)都具有相同 的數(shù)
2、據(jù)類型,我們通過數(shù)組名加上一個(gè)不會(huì)越界下標(biāo) 值來唯一確定數(shù)組中的元素。?還有更深的,那就是數(shù)組是一個(gè)特殊的對(duì)象! ! (對(duì)于這個(gè)lz理解的不是很好,對(duì)jvm也沒有看,所 以見解有限)。以下參考文獻(xiàn):http:/developer 51cto. com/art/201001/176671 h tm>http:/www. blogjava net/flyskyl9/articles/9276 3.html?opt=admin?不管在其他語言中數(shù)組是什么,在java中它就 是對(duì)象。一個(gè)比較特殊的對(duì)象。public class test public static void main(strin
3、g args) int array = new int10;system, out printlncarray 的父類是:"+array. getclass(). getsuperclass();system, out. println("array 的類名是:” +array, get class (). get name ();output:array 的父類是:class java. lang. objectarray的類名是:i?從上面示例可以看岀,數(shù)組的是object的直接 子類,它屬于“第一類對(duì)象”,但是它又與普通的 java對(duì)象存在很大的不同,從它的類名就可以
4、看出: i,這是什么東東? ?在jdk中我就沒有找到這個(gè)類, 話說這個(gè) i”都不是一個(gè)合法標(biāo)識(shí)符。怎么定義成類 啊?所以我認(rèn)為sum那幫天才肯定對(duì)數(shù)組的底層肯定 做了特殊的處理。?我們?cè)倏慈缦率纠?public class test public static void main(string args) int array_00 = new int 10; system, out. printin (,z維數(shù)組:"+ array_ 00. get class () getn ame ();int array_01 二 new int10 10;system, out. printl
5、n(,z二維數(shù)組:"+ array_01. getclass() getname();int array_02 = new int101010; system, out. printin (,z三維數(shù)組:"+ array_02. getclass(). getname();output:一維數(shù)組:i二維數(shù)組:i三維數(shù)組:i?通過這個(gè)實(shí)例我們知道:代表了數(shù)組的維度, 一個(gè)表示一維,兩個(gè)表示二維??梢院?jiǎn)單的說數(shù)組的類名由若干個(gè)'和數(shù)組元素類型的內(nèi)部名稱組成。 不清楚我們?cè)倏矗簆ublic class test public static void main(string
6、 args) system. out println(objcct: + objectl class);system, out. println(object : + object . class);system, err. printin ("object : + object . class); system .out println(“object:" + object.class);output:object:class ljava. lang. object;object:class ljava. lang. object;object : class ljava
7、. 1 ang. object;object:class java. lang. object?從這個(gè)實(shí)例我們可以看出數(shù)組的“廬山真面 目”。同時(shí)也可以看出數(shù)組和普通的java類是不同 的,普通的java類是以全限定路徑名+類名來作為自 己的唯一標(biāo)示的,而數(shù)組則是以若干個(gè)+l+數(shù)組元素 類全限定路徑+類來最為唯一標(biāo)示的。這個(gè)不同也許在 某種程度上說明了數(shù)組也普通java類在實(shí)現(xiàn)上存在 很大的區(qū)別,也許可以利用這個(gè)區(qū)別來使得jvm在處 理數(shù)組和普通java類時(shí)作出區(qū)分。?我們暫且不論這個(gè)i是什么東東,是由誰來聲 明的,怎么聲明的(這些我現(xiàn)在也不知道!但是有一 點(diǎn)可以確認(rèn):這個(gè)是在運(yùn)行時(shí)確定的)。
8、先看如下:public class test public static void main(string args) int array = new int10;class clazz 二 array, getclass();system, out. println(clazz. getdeclaredfields(). length);system, out. printin(clazz. getdeclaredmethods(). length); system out. println(clazz. getdeclaredconstructors(). length); system,
9、 out. println(clazz. getdeclaredarmotations(). length); systcm.out.println(clazz. getdcclarcdclasscs(). length);output:00000?從這個(gè)運(yùn)行結(jié)果可以看出,我們親愛的i沒有 生命任何成員變量、成員方法、構(gòu)造函數(shù)、annotation 甚至連length成員變量這個(gè)都沒有,它就是一個(gè)徹徹 底底的空類。沒有聲明length,那么我們array, length時(shí),編譯器怎么不會(huì)報(bào)錯(cuò)呢?確實(shí),數(shù) 組的length是一個(gè)非常特殊的成員變量。我們知道數(shù) 組的是object的直接之類,但是o
10、bject是沒有 length這個(gè)成員變量的,那么length應(yīng)該是數(shù)組的 成員變量,但是從上面的示例中,我們發(fā)現(xiàn)數(shù)組根本 就沒有任何成員變量,這兩者不是相互矛盾么?public class main public static void main(string args) int a二 new int 2;int i = a. length;?打開class文件,得到main方法的字節(jié)碼:0 iconst_2/將int型常量2壓入操作數(shù)棧1 newarray 10 (int)/將2彈出操作數(shù)棧,作為長(zhǎng)度,創(chuàng)建一個(gè)元素類型為int,維度為1的數(shù)組,并將數(shù)組的引用壓入操作數(shù)棧3 astore_l
11、在索引為1的扁部變量(即q中4 aloadl數(shù)棧"5 arraylcngth取其長(zhǎng)度(jvm負(fù)責(zé)實(shí)現(xiàn)如何獲取),6 istore_2引為2的局部交量(即i)中7 return/將數(shù)組的引用從操作數(shù)棧中彈出,保存/將索引為1的局部變量(即q壓入操作/從操作數(shù)棧彈出數(shù)組引用(即a),并獲 并將長(zhǎng)度壓入操作數(shù)棧/將數(shù)組長(zhǎng)度從操作數(shù)棧彈出,保存在索/main方法返回?在這個(gè)字節(jié)碼中我們還是沒有看到length這 個(gè)成員變量,但是看到了這個(gè):arraylength,這條指 令是用來獲取數(shù)組的長(zhǎng)度的,所以說jvm對(duì)數(shù)組的長(zhǎng) 度做了特殊的處理,它是通過arraylength這條指令 來實(shí)現(xiàn)的。二、
12、數(shù)組的使用方法?通過上面算是對(duì)數(shù)組是什么有了一個(gè)初步的認(rèn) 識(shí),下面將簡(jiǎn)單介紹數(shù)組的使用方法。?數(shù)組的使用方法無非就是四個(gè)步驟:聲明數(shù)組、 分配空間、賦值、處理。?聲明數(shù)組:就是告訴計(jì)算機(jī)數(shù)組的類型是什么。 有兩種形式:int array> int array 0?分配空間:告訴計(jì)算機(jī)需要給該數(shù)組分配多少 連續(xù)的空間,記住是連續(xù)的。array = new int 10;?賦值:賦值就是在已經(jīng)分配的空間里面放入數(shù) 據(jù)。array0二 1、array1二 2其實(shí)分配空間和賦值是一起進(jìn)行的,也就是完成數(shù)組的初始化。有 如下三種形式:int a = new int 2 ;/默認(rèn)為0,如果是引用數(shù)據(jù)類型就為nullint b = new int 1, 2, 3, 4,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國集成建筑行業(yè)運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國螺旋藻行業(yè)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國葡萄籽提取物opc行業(yè)運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025天津市建筑安全員知識(shí)題庫
- 2025-2030年中國航空客運(yùn)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國電解錳廢渣處理行業(yè)競(jìng)爭(zhēng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 長(zhǎng)江大學(xué)《設(shè)計(jì)軟件基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國石油大學(xué)(華東)《強(qiáng)化學(xué)習(xí)(雙語)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安體育學(xué)院《食品分析技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西衛(wèi)生職業(yè)技術(shù)學(xué)院《食品研究開發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 心理課教案自我認(rèn)知與情緒管理
- 幼兒園 中班心理健康《我會(huì)傾訴》
- GB/T 6553-2024嚴(yán)酷環(huán)境條件下使用的電氣絕緣材料評(píng)定耐電痕化和蝕損的試驗(yàn)方法
- 中職旅游專業(yè)《中國旅游地理》說課稿
- 微積分試卷及規(guī)范標(biāo)準(zhǔn)答案6套
- 【鄉(xiāng)村振興背景下農(nóng)村基層治理問題探究開題報(bào)告(含提綱)3000字】
- 藥物警戒管理體系記錄與數(shù)據(jù)管理規(guī)程
- 2024-2029年擴(kuò)展塢行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃投資研究報(bào)告
- SH/T 3003-2024 石油化工合理利用能源設(shè)計(jì)導(dǎo)則(正式版)
- 中國人民大學(xué)613衛(wèi)生統(tǒng)計(jì)歷年真題12-16
- 人事聘用合同范本標(biāo)準(zhǔn)版
評(píng)論
0/150
提交評(píng)論