簡介
默認(rèn)數(shù)組大小即程序已經(jīng)設(shè)定好的數(shù)組大小。這里的數(shù)組可以是一維數(shù)組、二維數(shù)組以及多維數(shù)組,主要與具體應(yīng)用有關(guān)。例如,在C語言中,申請內(nèi)存空間使用的默認(rèn)數(shù)組大小就是一維數(shù)組;又例如在數(shù)據(jù)庫,二維表就是一個二維數(shù)組,其設(shè)定的大小可以當(dāng)做是默認(rèn)數(shù)組大小。
二維表概述在關(guān)系模型中,數(shù)據(jù)結(jié)構(gòu)表示為一個二維表,一個關(guān)系就是一個二維表(但不是任意一個二維表都能表示一個關(guān)系,例如兩個元組的候選鍵相同即表中的任意兩行相同,就不能表示一個關(guān)系。1),二維表名就是關(guān)系名。表中的第一行通常稱為屬性名,表中的每一個元組和屬性都是不可再分的,且元組的次序是無關(guān)緊要的。常用的關(guān)系術(shù)語如下:
記錄 二維表中每一行稱為一個記錄,或稱為一個元組。
字段 二維表中每一列稱為一個字段,或稱為一個屬性。
域 即屬性的取值范圍。
性質(zhì)二維表一般滿足下面7個性質(zhì):
(1)二維表中元組個數(shù)是有限的——元組個數(shù)有限性;
(2)二維表中元組均不相同——元組的唯一性;
(3)二維表中元組的次序可以任意交換——元組的次序無關(guān)性;
(4)二維表中元組的分量是不可分割的基本數(shù)據(jù)項(xiàng)——元組分量的原子性;
(5)二維表中屬性名各不相同——屬性名唯一性;
(6)二維表中屬性與次序無關(guān),可任意交換——屬性的次序無關(guān)性;
(7)二維表屬性的分量具有與該屬性相同的值域——分量值域的統(tǒng)一性。
一維數(shù)組一維(或單維)數(shù)組是一種線性數(shù)組,其中元素的存取是以行或列索引的單一下標(biāo)表示。
譬如考慮C編程語言的數(shù)組宣告
int anArrayName [10];
語法為:
datatype anArrayname [sizeofArray];
在上述范例中,被宣告的數(shù)組將包含int型別的10個元素,可為任何整數(shù)值。這樣,數(shù)組元素的
索引下標(biāo)則為0-9(含)。例如,anArrayName[0]和anArrayName[9]分別是第一個和最后一個元素的表達(dá)。
對于以線性定址的向量,索引為i的元素處于位址B+c×i,其中B是固定的基底位址,c為常數(shù),
有時稱為位址增量或跨步。
如果有效的元素索引從0開始,則常數(shù)B只是數(shù)組第一個元素的位址。因此C語言指定
數(shù)組的索引一定從0開始;許多開發(fā)人員會將該元素稱為“第零”而不是“第一”。
然而若適當(dāng)選擇基底位址B,來作為第一個元素的索引起始值。譬如數(shù)組有五個元素,索引為1到5,基底位址B以B+30c來替換,則相同數(shù)組的這些元素索引將轉(zhuǎn)為31到35。如果編號從0開始,則常數(shù)B可能不是任何元素的位址。
二維數(shù)組前面介紹的數(shù)組只有一個下標(biāo),稱為一維數(shù)組, 其數(shù)組元素也稱為單下標(biāo)變量。在實(shí)際問題中有很多量是二維的或多維的, 因此C語言允許構(gòu)造多維數(shù)組。多維數(shù)組元素有多個下標(biāo), 以標(biāo)識它在數(shù)組中的位置,所以也稱為多下標(biāo)變量。本小節(jié)只介紹二維數(shù)組,多維數(shù)組可由二維數(shù)組類推而得到。二維數(shù)組類型說明的一般形式是:
類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…;
其中常量表達(dá)式1表示第一維下標(biāo)的長度,常量表達(dá)式2 表示第二維下標(biāo)的長度。例如:
int a[3][4]; 說明了一個三行四列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有3×4個,即:
a[0][0],a[0][1],a[0][2],a[0][3]
a[1][0],a[1][1],a[1][2],a[1][3]
a[2][0],a[2][1],a[2][2],a[2][3]
二維數(shù)組在概念上是二維的,即是說其下標(biāo)在兩個方向上變化, 下標(biāo)變量在數(shù)組中的位置也處于一個平面之中, 而不是象一維數(shù)組只是一個向量。但是,實(shí)際的硬件存儲器卻是連續(xù)編址的, 也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數(shù)組,可有兩種方式:一種是按行排列, 即放完一行之后順次放入第二行。另一種是按列排列, 即放完一列之后再順次放入第二列。在C語言中,二維數(shù)組是按行排列的。在如上中,按行順次存放,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四個元素也是依次存放。由于數(shù)組a說明為int類型,該類型占兩個字節(jié)的內(nèi)存空間,所以每個元素均占有兩個 字節(jié)(圖中每一格為一字節(jié))。
多維數(shù)組普通數(shù)組采用一個整數(shù)來作下標(biāo)。多維數(shù)組(高維數(shù)組)的概念特別是在數(shù)值計算和圖形應(yīng)用方面非常有用。我們在多維數(shù)組之中采用一系列有序的整數(shù)來標(biāo)注,如在[ 3,1,5 ] 。這種整數(shù)列表之中整數(shù)的個數(shù)始終相同,且被稱為數(shù)組的“維度”。關(guān)于每個數(shù)組維度的邊界稱為“維”。維度為k的數(shù)組通常被稱為k維。
多維數(shù)組的數(shù)組名字,在表達(dá)式中自動轉(zhuǎn)換為數(shù)組首元素地址值,但這個首元素實(shí)際上是去除數(shù)組下標(biāo)第一維之后的數(shù)組剩余部分。例如:
int a[10][15];
int (*p)[15]=a; // a在表達(dá)式中自動轉(zhuǎn)換為指向具有15個int的數(shù)組的指針值。
聲明固定大小的數(shù)組有三種方法聲明固定大小的數(shù)組,用哪一種方法取決于數(shù)組應(yīng)有的有效范圍:
建立公用數(shù)組,在模塊的聲明段用 Public語句聲明數(shù)組。
建立模塊級數(shù)組,在模塊的聲明段用 Private語句聲明數(shù)組。
建立局部數(shù)組,在過程中用 Private語句聲明數(shù)組。
數(shù)組類型數(shù)組類型變量采用如下方法表示,即一個基類型后面帶有空的中括號[ ]。還有一種做法,Java接受C風(fēng)格的聲明,即在數(shù)組名后可以放置中括號。
以下聲明是等價的:
int [ ] arrayOfInts;
int arrayOfInts [ ];
無論哪一種情況,array Of Ints均聲明為一個整型數(shù)組。此數(shù)組的大小尚不可知,因?yàn)槲覀冎欢x了數(shù)組類型變量。至此還沒有創(chuàng)建此數(shù)組類的一個具體實(shí)例,即沒有為之關(guān)聯(lián)存儲空間。聲明一個數(shù)組類型變量時指定數(shù)組的長度甚至是不可能的。[2]
對象數(shù)組可以采用同樣的方式創(chuàng)建:
String [ ] someStrings;
Button someButtons [ ];