Java教程 8.1 數(shù)組 |
發(fā)布時間: 2012/8/17 17:29:52 |
對數(shù)組的大多數(shù)必要的介紹已在第4 章的最后一節(jié)進行。通過那里的學習,大家已知道自己該如何定義及初 討論它。然而,由于為這種大小的靈活性要付出較大的代價,所以我們認為矢量的效率并沒有數(shù)組高。 C++的矢量類知道自己容納的是什么類型的對象,但同Java 的數(shù)組相比,它卻有一個明顯的缺點:C++矢量類 的operator[]不能進行范圍檢查,所以很容易超出邊界(然而,它可以查詢vector 有多大,而且at()方法 確實能進行范圍檢查)。在Java 中,無論使用的是數(shù)組還是集合,都會進行范圍檢查——若超過邊界,就會 獲得一個RuntimeException(運行期違例)錯誤。正如大家在第9 章會學到的那樣,這類違例指出的是一個 程序員錯誤,所以不需要在代碼中檢查它。在另一方面,由于C++的vector 不進行范圍檢查,所以訪問速度 較快——在Java 中,由于對數(shù)組和集合都要進行范圍檢查,所以對性能有一定的影響。 本章還要學習另外幾種常見的集合類:Vector(矢量)、Stack(堆棧)以及Hashtable(散列表)。這些類 都涉及對對象的處理——好象它們沒有特定的類型。換言之,它們將其當作Object 類型處理(Object 類型 是Java 中所有類的“根”類)。從某個角度看,這種處理方法是非常合理的:我們僅需構(gòu)建一個集合,然后 任何Java 對象都可以進入那個集合(除基本數(shù)據(jù)類型外——可用Java 的基本類型封裝類將其作為常數(shù)置入 集合,或者將其封裝到自己的類內(nèi),作為可以變化的值使用)。這再一次反映了數(shù)組優(yōu)于常規(guī)集合:創(chuàng)建一 個數(shù)組時,可令其容納一種特定的類型。這意味著可進行編譯期類型檢查,預防自己設置了錯誤的類型,或 者錯誤指定了準備提取的類型。當然,在編譯期或者運行期,Java 會防止我們將不當?shù)南l(fā)給一個對象。 所以我們不必考慮自己的哪種做法更加危險,只要編譯器能及時地指出錯誤,同時在運行期間加快速度,目 的也就達到了。此外,用戶很少會對一次違例事件感到非常驚訝的。 考慮到執(zhí)行效率和類型檢查,應盡可能地采用數(shù)組。然而,當我們試圖解決一個更常規(guī)的問題時,數(shù)組的局 限也可能顯得非常明顯。在研究過數(shù)組以后,本章剩余的部分將把重點放到Java 提供的集合類身上。 本文出自:億恩科技【www.allwellnessguide.com】 |