一維陣列的建立

2021-10-12 12:45:31 字數 2729 閱讀 2159

陣列是最常用的一種資料結構,是效率最高的儲存和元素訪問的方式。

特點:線性順序、連續儲存。

使用陣列時需要注意:

陣列一旦初始化,其長度便固定,不能修改

陣列元素型別可以是基本資料型別,也可以是引用資料型別

陣列通過陣列名[索引]這種方式訪問陣列元素。

格式:

陣列元素型別 陣列名字;

陣列元素型別[

] 陣列名字;

例如:

int arr1;

int[

] arr2;

如果只是完成上面的宣告,那麼這個陣列是不能使用的,此時arr1和arr2都是null。只有進行初始化才會給陣列真正的分配空間。

1、陣列元素型別 陣列名 = new 陣列元素型別[陣列長度];

使用這種方式宣告陣列,是陣列長度初始化,陣列的內容為對應資料型別的預設值。

例如,建立乙個長度為5的字串陣列。

string[

] arr =

newstring[5

];

由於沒有給陣列元素賦值,所以每個陣列元素都是預設值,而string型別的預設值是null,因此arr這個陣列長度是5,其中每個陣列元素值是null。

2、陣列元素型別 陣列名 = new 陣列元素型別 ;

陣列標準初始化,直接給陣列元素賦值。

例如,建立乙個長度為5的int陣列

int

arr =

newint

;

上面**建立了乙個長度為5,陣列元素為1,2,3,4,5的int型陣列arr。

3、陣列元素型別 陣列名 = ;

陣列省略初始化,僅能在宣告陣列同時初始化時使用。

例如,建立乙個長度為5的int陣列

int

arr =

;

和字串不同,陣列的建立中沒有常量池的概念,因此這種建立方式和上面兩種new的建立方式沒什麼區別,都是新開闢的位址存放陣列。

如果是先宣告陣列,然後初始化,那麼上面的省略初始化方法不能使用。

例如:

int

arr1;

int[

] arr2;

int[

] arr3;

arr1 =

newint[5

];// 可以

arr2 =

newint

;// 可以

arr3 =

;// 這種方式不可以,報錯

在先宣告,後初始化的情況下,不能使用陣列名 = ;的省略形式來賦值。

陣列索引從0開始到 (陣列長度-1)即 [0,length - 1]。

想要得到陣列長度可以使用物件名.length

對比記憶:字串長度使用物件名.length()

注意它們之間的區別:陣列長度使用的是例項物件,而字串長度使用的例項方法。

在使用陣列的時候,一定要注意索引的取值範圍,不然很容易出現陣列越界的異常。

當陣列長度定下來之後,便無法更改!!

string[

] s1;

//有變數,沒物件,不能直接使用,必須初始化

string[

] s2 =

newstring

;//有變數,有物件,陣列長度為0

string[

] s3 =

newstring[5

];//有變數,有物件,陣列長度為5,陣列中的string元素的值是null

思考下面**的輸出

int

a =;int

b = arr1;

int[

] c =

;for

(int i =

0; i < arr2.length; i++

)

輸出:

a[0]

=2 b[0]

=2 c[0]

=1a[1

]=2 b[1]

=2 c[1]

=1a[2

]=2 b[2]

=2 c[2]

=1

在**中,我們只修改了b陣列的值,但是在輸出的結果,我們發現a的值也發生了變化,這是為什麼?。

這是因為陣列是引用資料型別,在b = a;這條語句中是a將自己指向的陣列的位址傳給了b,此時a和b都指向同乙個位址,修改b陣列元素的值就相當於修改a陣列元素的值。而c是指向另一塊記憶體空間的,a、b修改陣列元素的值並不會影響c所指向的記憶體空間,因此c陣列的值並沒有變化。

python 建立二維陣列和一維陣列

一維陣列 二維陣列 寫 的時候需要使用python建立二維陣列 num list 0 5 2 print num list 輸出 0,0,0,0,0 0,0,0,0,0 看輸出覺得這種方法是對的,結果程式出現了錯誤,經過分析,這種建立二維陣列的方式存在問題 num list 0 0 1 print ...

一維二維陣列的建立與遍歷

一 一維陣列的建立與遍歷 方法一 型別 變數 new 型別 l例如 string a new string var int 若使用new關鍵字,則方括號內必須宣告乙個int型別的值來表示長度 也可以 string a new string 方法二 string a 一維陣列的遍歷 for和forea...

c 一維陣列的建立和排序

bool featurecmp keypoint f1,keypoint f2 int main 建立一維陣列 size t m 3 假定陣列長度為m double matched matched new double m 動態分配空間 一維陣列賦值 matched 0 2 matched 1 1 ...