java開發(fā)中經(jīng)常使用的數(shù)組以及使用方法

  本文介紹了在java開發(fā)中經(jīng)常使用的數(shù)組,以及數(shù)組的使用方法,注意事項(xiàng)。

  一.什么是數(shù)組

  1. 數(shù)組:數(shù)組即是一堆邏輯上無序的元素的序列,用來存儲(chǔ)多個(gè)相同類型的數(shù)據(jù),數(shù)組可以看做是一個(gè)集合,其內(nèi)部元素存儲(chǔ)在一個(gè)連續(xù)的內(nèi)存塊當(dāng)中,并通過索引(即數(shù)組中元素的下標(biāo))來訪問。

  2. 特點(diǎn):

  A. 數(shù)組中的元素?cái)?shù)據(jù)類型都相同;

  B. 各元素在內(nèi)存中的存儲(chǔ)是有先后順序的;

  C. 表示數(shù)組元素的時(shí)候,需要使用數(shù)組名和該元素在數(shù)組中的位置來表示;

  3. 分類:

  最簡單的形式是一維數(shù)組,即數(shù)組中直接存儲(chǔ)元素,如{1,2,3,4};其次是二維數(shù)組,在二維數(shù)組中的元素都是一維數(shù)組,如{{123},{456},{789}};再次意義上可以有更多維的數(shù)組。

  二.Java中的數(shù)組

  (以下示例中皆以整型一維數(shù)組 int array[] 為例)

  1. 特點(diǎn):

  java中的數(shù)組滿足數(shù)組的所有含義和特點(diǎn);

  2. 聲明數(shù)組:

  在java中,聲明數(shù)組時(shí)有兩種情況:有大小,或者無大小,同時(shí)在聲明數(shù)組時(shí),需要聲明數(shù)組的數(shù)據(jù)類型,以及數(shù)組的維度,聲明方式分為以下幾種:

  a. int array[] = {1,2,3};直接在聲明數(shù)組的同時(shí)進(jìn)行賦值;

  b. int array[] ;聲明數(shù)組未進(jìn)行賦值操作;

  c. Int array[] = new int[10];聲明數(shù)組時(shí)定義了數(shù)組的大小;

  3. 數(shù)組長度:

  使用數(shù)組的 length 屬性,可已查看數(shù)組的大小:

  Int length = array.lenth;

  4. 遍歷數(shù)組:

  在開發(fā)中,根據(jù)數(shù)組的特性,經(jīng)常會(huì)通過循環(huán)來遍歷數(shù)組,如for循環(huán)或forEach循環(huán):

  For循環(huán),根據(jù)數(shù)組的小標(biāo)進(jìn)行遍歷:

  for(int i=0;i

  System.out.println(array[i]);

  }

  ForEach循環(huán),根據(jù)數(shù)組的數(shù)據(jù)類型得到元素,進(jìn)行遍歷:

  for(Integer data : array){

  System.out.println(data);

  }

  5. 類型轉(zhuǎn)換:

  A. 數(shù)組轉(zhuǎn)為Set集合:

  使用java api 中Arrays 工具類進(jìn)行轉(zhuǎn)換為list,再轉(zhuǎn)為set:

  Set set = new HashSet(Arrays.asList(array));

  B.數(shù)組轉(zhuǎn)為List集合:

  第一種:遍歷數(shù)組,向list中添加元素;

  第二種,使用api java.util.Arrays進(jìn)行轉(zhuǎn)換:

  List list = Arrays.asList(array);

  6. java數(shù)組常用操作:

  A. int數(shù)組轉(zhuǎn)換為String:

  String result =Arrays.toString(array);

  B.判斷數(shù)組是否包含元素:

  使用數(shù)組的contains 方法進(jìn)行判斷,該方法返回值為boolean類型,如果包含該元素,返回值為true,否則返回false;

  如:int array[] = {1,2,2,3,4,5};

  array.contains(1)返回值為true;array.contains(6)返回值為false;

  C.填充數(shù)組:

  第一種可通過循環(huán)數(shù)組的下標(biāo)(index),維數(shù)組的每一個(gè)位置進(jìn)行賦值(array[index] = data);

  第二種可以通過工具類Arrays進(jìn)行填充,如:Arrays.fill(array,5),將array的每個(gè)位置都賦值為5.

  D.復(fù)制數(shù)組:

  第一種方法是直接指定新的數(shù)組:int array2[] = Arrays.copyOf(array,20),將數(shù)組array復(fù)制到array2中,同時(shí)指定array2的數(shù)組大小是20;

  第二種方法是根據(jù)指定范圍進(jìn)行賦值,如:

  Int array2[] = Arrays.copyOfRange(array,5,10);將array中第5位到第9位的元素復(fù)制到array2中。

  E.比較數(shù)組:

  通常使用Arrays.equals()方法進(jìn)行比較,返回值為boolean類型,如Arrays.equals(array,array2);

  F.數(shù)組排序:

  在java中,通常可以通過循環(huán),按照特定的業(yè)務(wù)邏輯進(jìn)行排序,如果對元素沒有特殊要求,則可以通過Array.sort()方法進(jìn)行排序,如:Arrays.sort(array);對數(shù)組進(jìn)行排序;

  Arrays.sort(array,2,6);對數(shù)組的第2個(gè)元素到第5個(gè)元素進(jìn)行排序。

  三.Java中的數(shù)組與內(nèi)存

  在java中,若聲明數(shù)組時(shí)直接進(jìn)行賦值,則為數(shù)組分配的內(nèi)存中直接存入數(shù)值;若聲明數(shù)組時(shí)沒有進(jìn)行賦值,只說明了數(shù)組的大小size,則在數(shù)組的內(nèi)存塊中,有size個(gè)狀態(tài)為null的內(nèi)存塊被占用;

  當(dāng)程序執(zhí)行結(jié)束后,數(shù)組的有效長度如果變小,這時(shí)需要注意數(shù)組原先占用的內(nèi)存塊不會(huì)被jvm處理,如果這種情況比較多,則會(huì)發(fā)生內(nèi)存泄漏,此時(shí)需要程序員在使用數(shù)組后,及時(shí)對無效的資源進(jìn)行釋放,即在數(shù)組的該元素為空,array[index] = null.

  四.總結(jié)

  在java中,數(shù)組是經(jīng)常使用的技術(shù),通過一個(gè)能夠存儲(chǔ)多個(gè)相同類型數(shù)據(jù)元素的容器來實(shí)現(xiàn)各種需求,同時(shí)在數(shù)組內(nèi)部可以通過位置下標(biāo)來快速所以數(shù)據(jù),增加了java程序的可讀性與健壯性;在使用數(shù)組的同時(shí),也需要注意數(shù)組容易造成的內(nèi)存泄漏等問題。

the end
  • 標(biāo)簽:
  • Java

評論(0)