青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

Java語(yǔ)言深入:關(guān)于java數(shù)組的深度思考

剛剛開始接觸java數(shù)組的人都會(huì)聽到一句類似的話:java是純面向?qū)ο蟮恼Z(yǔ)言,他的數(shù)組也是一個(gè)對(duì)象。

  于是乎,我就按照一個(gè)對(duì)象的方式來使用數(shù)組,心安理得。直到我接觸到C的數(shù)組后,才發(fā)現(xiàn)將數(shù)組作為一個(gè)類來使用在實(shí)現(xiàn)上是多么的不自然。

  首先我們看一下表面現(xiàn)象,數(shù)組創(chuàng)建的時(shí)候采用的是如下語(yǔ)句:

  MyClass[] arr = new MyClass[9];

  而普通類采用的是如下語(yǔ)句:

  MyClass obj = new MyClass();

  就是說,創(chuàng)建數(shù)組的時(shí)候不使用小括號(hào)傳參。使得數(shù)組和普通類看起來就有很多不同,因?yàn)樾±ㄌ?hào)里的參數(shù)是傳遞給構(gòu)造方法的,進(jìn)而讓人感覺數(shù)組類是沒有構(gòu)造方法的。

  再往深了想,還有很多讓人感覺不自然的東西??梢钥隙ǖ氖?,java確實(shí)將數(shù)組作為了一個(gè)類來處理。還是用上面的例子說明:

  可以通過以下方法得到MyClass[]Class實(shí)例:

  arr.getClass()或MyClass[].class.這樣,我就可以向數(shù)組類里面窺探了。

  Class clazz = MyClass[].class

  System.out.printlnclazz.getConstructors()。length);

  打印出來的結(jié)果是0;證明數(shù)組類確實(shí)沒有構(gòu)造方法。

  如果強(qiáng)行執(zhí)行clazz.newInstance();就會(huì)得到下面的錯(cuò)誤。

  java.lang.InstantiationException [Larraytest.MyClass

  證明數(shù)組類不能夠通過普通的反射方式來創(chuàng)建一個(gè)實(shí)例。

  再看看數(shù)組類的廬山真面目

  System.out.printlnclazz);

  輸出是:

  [Larraytest.MyClass

  對(duì)Java Class文件結(jié)構(gòu)稍有了結(jié)就知道,這個(gè)字符串的意思就是一個(gè)元素類型為arraytest.MyClass的一維數(shù)組。也就是說,數(shù)組類型不是和普通類一樣,以一個(gè)全限定路徑名+類名來作為自己的唯一標(biāo)示的,而是以[+一個(gè)或者多個(gè)L+數(shù)組元素類全限定路徑+類來最為唯一標(biāo)示的。這個(gè)()也是數(shù)組和普通類的區(qū)別。而這個(gè)區(qū)別似乎在某種程度上說明數(shù)組和普通java類在實(shí)現(xiàn)上有很大區(qū)別。因?yàn)?span lang="EN-US">java
虛擬機(jī)(java指令集)在處理數(shù)組類和普通類的時(shí)候,肯定會(huì)做出區(qū)分。我猜想,可能會(huì)有專門的java虛擬機(jī)指令來處理數(shù)組。

  既然我們可以得到數(shù)組的Class類實(shí)例,就說明肯定需要調(diào)用ClassLoaderdefineClass(不一定非要是loadClass方法)方法,來構(gòu)造一個(gè)Class實(shí)例。java虛擬機(jī)規(guī)范規(guī)定,任何一個(gè)可以被加載的類,如果其類文件存儲(chǔ)在文件系統(tǒng)上,那么一個(gè)*.class文件只能存儲(chǔ)一個(gè)類信息,也就是說,數(shù)組類的信息不可能以類文件的形式存儲(chǔ)在本地磁盤上(否則任意一個(gè)類都要配有255個(gè)數(shù)組類了……),既然這樣,那就說明java虛擬機(jī)肯定內(nèi)置了一塊用來聲明數(shù)組類的數(shù)據(jù)(不管是幾級(jí)數(shù)組)。這是符合java虛擬機(jī)規(guī)范的,規(guī)范規(guī)定class類數(shù)據(jù)可以來自任意介質(zhì),包括本地磁盤、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、內(nèi)存等等。

  分析到這里,我基本上可以肯定:java對(duì)數(shù)組對(duì)象化的操作的支持是指令級(jí)的,也就是說java虛擬機(jī)有專門針對(duì)數(shù)組的指令。數(shù)組的Class類實(shí)例是java虛擬機(jī)動(dòng)態(tài)創(chuàng)建動(dòng)態(tài)加載的,其結(jié)構(gòu)與普通java類的Class實(shí)例有一些不同。

  JDK API中有一個(gè)java.lang.reflect.Array類,這個(gè)類提供了很多方法(絕大多數(shù)是native方法,這在另一個(gè)方面證明了java對(duì)數(shù)組的支持是專用指令支持的,否則用本地方法干嘛^_^),用來彌補(bǔ)我們對(duì)數(shù)組操作的局限性。

  下面這句話用來創(chuàng)建一個(gè)一維的、長(zhǎng)度為10的、類型為arraytest.MyClass的數(shù)組:

  arraytest.MyClass[] arr = arraytest.MyClass[] Array.newInstancearraytest.MyClass 10);

  下面這句話用來創(chuàng)建一個(gè)二維的、35的、類型為arraytest.MyClass的數(shù)組:

  int[] arrModel = new int[]{35};

  Object arrObj = Array.newInstanceSub.class, arrModel);

  當(dāng)然你可以用一個(gè)數(shù)組的引用指向上面的二維數(shù)組,這里我們用一個(gè)Object的引用指向他。

  使用的時(shí)候,我們也是可以利用Array類提供的方法來實(shí)現(xiàn):

  System.out.printlnArray.getLengtharrObj);//第一維長(zhǎng)度為3

  System.out.printlnArray.getLengthArray.getarrObj, 2)));//第二維長(zhǎng)度為5,這里如果寫3,就會(huì)得到你意想之中的

  java.lang.ArrayIndexOutOfBoundsException

  打印結(jié)果是如我所想的:

  3

  5

  對(duì)于數(shù)組的Class類實(shí)例,還有一些奇怪的現(xiàn)象:在運(yùn)行代碼java.lang.reflect.Field fieldarr = clazz.getField"length");的時(shí)候,會(huì)拋出異常:java.lang.NoSuchFieldException length,這似乎在說數(shù)組類沒有length這個(gè)域,而這個(gè)域其實(shí)是我們用的最多的一個(gè)(也就是說這個(gè)域是肯定存在的)。我想關(guān)于數(shù)組的Class類實(shí)例、數(shù)組的實(shí)現(xiàn)等,還有很多貓膩在里面。

  順便說一句,java數(shù)組最多只能是255維的。這個(gè)讓人看到了C的影子,嘿嘿。

  “Java把數(shù)組當(dāng)作一個(gè)java類來處理說起來容易,用起來自然,但是細(xì)細(xì)想來,還是有很多不簡(jiǎn)單的地方呀。

posted on 2009-08-10 14:38 肥仔 閱讀(242) 評(píng)論(1)  編輯 收藏 引用 所屬分類: Web-后臺(tái)

評(píng)論

# re: Java語(yǔ)言深入:關(guān)于java數(shù)組的深度思考  回復(fù)  更多評(píng)論   

顯然是因?yàn)閖ava在支持?jǐn)?shù)組的時(shí)候還不支持泛型導(dǎo)致的,.net上面沒這個(gè)本質(zhì)上的區(qū)別。
2009-08-10 19:20 | 陳梓瀚(vczh)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久夜色精品国产噜噜av| 亚洲一区区二区| 国产一区二区按摩在线观看| 欧美国产日本| 欧美资源在线观看| 亚洲综合另类| 亚洲一区免费| 欧美精品日韩一区| 欧美日韩1区2区| 欧美国产亚洲精品久久久8v| 国内在线观看一区二区三区 | 久久综合伊人77777麻豆| 欧美一级理论性理论a| 欧美一级淫片播放口| 国产精品久久久久久久久久ktv| 欧美日韩一区二区在线观看视频| 欧美激情四色 | 亚洲欧洲另类国产综合| 黑人巨大精品欧美一区二区小视频| 一区二区三区福利| 一区二区三区四区五区精品视频| 欧美激情综合色| 99精品免费视频| 亚洲免费在线观看| 国产精品三上| 国产在线观看一区| 亚洲国产高潮在线观看| 亚洲人成网站在线观看播放| 久久国产高清| 欧美顶级少妇做爰| 欧美午夜宅男影院| 在线观看国产日韩| 日韩亚洲欧美高清| 亚洲欧美中文日韩在线| 久久久久国产一区二区三区| 免费欧美在线视频| 一本久道久久综合婷婷鲸鱼| 中文国产一区| 久久青草欧美一区二区三区| 欧美日产在线观看| 亚洲欧美在线一区| 久久大综合网| 亚洲欧洲一区二区天堂久久| 亚洲精选在线| 欧美中文字幕在线播放| 在线观看视频免费一区二区三区| 亚洲第一区在线| 亚洲一卡二卡三卡四卡五卡| 欧美1区免费| 国产视频不卡| 亚洲精品在线视频观看| 久久久99国产精品免费| 久久婷婷蜜乳一本欲蜜臀| 亚洲三级电影全部在线观看高清| 香蕉久久国产| 亚洲三级免费观看| 免费观看成人| 亚洲一区三区视频在线观看| 蜜臀久久99精品久久久画质超高清| 欧美福利在线观看| 亚洲欧美综合精品久久成人| 欧美日韩大片| 久久九九免费视频| 欧美精品一区二| 久久在线精品| 欧美日韩一区二区三区视频| 久久国产精品亚洲va麻豆| 亚洲精品欧美日韩专区| 国产日韩精品视频一区| 亚洲欧美日韩国产中文在线| 亚洲日本电影| 国产亚洲激情| 日韩视频中文字幕| 免播放器亚洲| 黄色成人小视频| 一区二区av在线| 狠狠色香婷婷久久亚洲精品| 9l国产精品久久久久麻豆| 亚洲理论在线观看| 红桃视频成人| 欧美一区国产二区| 欧美专区亚洲专区| 亚洲欧美在线一区| 午夜精品99久久免费| 欧美日韩国产91| 亚洲国产欧美另类丝袜| 日韩视频第一页| 在线看视频不卡| 狂野欧美激情性xxxx欧美| 欧美成人官网二区| 蜜臀99久久精品久久久久久软件| 午夜精品久久久| 欧美午夜精品电影| 亚洲精品久久久久中文字幕欢迎你| 国产色综合久久| 亚洲天堂久久| 亚洲视频在线观看一区| 亚洲永久免费观看| 亚洲天堂久久| 欧美日本在线一区| 亚洲电影免费在线 | 亚洲制服av| 亚洲欧美经典视频| 欧美日韩一视频区二区| 亚洲第一网站免费视频| 亚洲欧洲在线观看| 欧美a级片网站| 91久久久久| 亚洲男女自偷自拍图片另类| 欧美午夜精品伦理| 亚洲欧美www| 欧美有码在线视频| 久久精品国产亚洲aⅴ| 久久精品国产99国产精品澳门| 国产精品青草综合久久久久99| 亚洲一级在线观看| 久久久91精品国产| 亚洲高清网站| 欧美屁股在线| 亚洲影音先锋| 久久人人看视频| 欧美日韩精品在线视频| 中日韩高清电影网| 久久精精品视频| 亚洲精品国产精品国自产观看| 欧美绝品在线观看成人午夜影视| 一本大道av伊人久久综合| 午夜精品成人在线视频| 狠狠干狠狠久久| 欧美精品粉嫩高潮一区二区 | 欧美一区免费视频| 亚洲第一黄网| 欧美午夜片欧美片在线观看| 亚洲一区二区三区精品动漫| 久久综合成人精品亚洲另类欧美| 亚洲国产综合91精品麻豆| 亚洲一区尤物| 美日韩丰满少妇在线观看| 9久re热视频在线精品| 国产一区二区精品在线观看| 你懂的一区二区| 欧美一级片一区| 日韩西西人体444www| 麻豆精品传媒视频| 香蕉av福利精品导航| 亚洲国产精品久久久久秋霞影院 | 国产在线国偷精品产拍免费yy| 欧美国产先锋| 久久蜜臀精品av| 国产精品99久久99久久久二8| 久久永久免费| 亚洲欧美亚洲| 99在线热播精品免费| 国产日韩欧美精品综合| 欧美1区2区| 久久久国产91| 久久久精品一区| 亚洲视频播放| 亚洲人成欧美中文字幕| 国产综合香蕉五月婷在线| 欧美色图五月天| 最近看过的日韩成人| 久久亚洲精品一区| 亚久久调教视频| 亚洲女人天堂成人av在线| 亚洲日韩欧美视频| 136国产福利精品导航| 国产在线精品一区二区中文| 国产精品日本一区二区| 欧美日韩在线一区二区| 欧美理论电影在线播放| 欧美va日韩va| 欧美成人综合网站| 欧美成人精品在线| 欧美岛国激情| 欧美成人午夜激情视频| 欧美不卡在线| 欧美69视频| 欧美成人免费小视频| 蜜月aⅴ免费一区二区三区| 免费看的黄色欧美网站| 老司机成人网| 美女视频一区免费观看| 欧美高清免费| 欧美日韩亚洲综合一区| 欧美日韩在线观看视频| 国产精品久久国产精品99gif | 国产日韩欧美在线观看| 国产日本欧洲亚洲| 韩国精品主播一区二区在线观看| 国产一区二区在线观看免费播放| 国产亚洲精品7777| 在线观看中文字幕不卡| 亚洲激情在线| 亚洲一区二区在线看| 欧美怡红院视频| 欧美成年视频| 99国产精品视频免费观看一公开| 亚洲视频精选在线| 欧美影院在线播放|