數組(Array):是多個相同類型元素按必定順序排列的集合。 程序員
數組是編程中最多見的一種數據結構,可用於存儲多個數據,每一個數組元素存放一個數據,一般咱們能夠經過數組元素的索引來訪問數組元素。包括爲數組元素賦值和取出數組元素的值。編程
數組的基本特性:數組
①、數組自己是引用數據類型,而數組中的元素能夠是任何數據類型,包括基本數據類型和引用數據類型。數據結構
②、建立數組對象會在內存中開闢一整塊連續的空間,而數組的引用是這塊連續空間的首地址。spa
③、數組一旦初始化完成,數組在內存所佔用的空間將被固定下來,所以數組的長度不可變。code
④、數組能夠直接經過下標的方式來調用,下標從0開始。對象
①、靜態初始化:初始化時顯示指定每一個元素的初始值,由系統決定數組長度 blog
數據類型 [ ] 數組名稱 = new 數據類型 [ ]{ 元素1,元素2,...}
或
數據類型 [ ] 數組名稱 = { 元素1,元素2,...}
這種方式聲明數組的同時直接給定了數組的元素,數組的大小由給定的數組元素個數決定。 排序
②、動態初始化:初始化時候程序員只指定數組長度,由系統元素分配初始值。索引
數據類型 [ ] 數組名稱 = new 數據類型 [數組長度]
或
數據類型 數組名稱[ ] = new 數據類型 [數組長度]
這種方式推薦將 [ ] 放在數組名稱的前面,這樣比較直觀。
注意:動態初始化,肯定了數組長度,就算沒有顯式的賦值,那麼他也有它們基本數據類型的默認值,如int默認值是0,String默認值爲null。
③、簡單示例:
//聲明一個元素爲1,2,3的int型數組 int[] arr=new int[]{1,2,3}; int[] arr1={1,2,3}; //聲明一個長度爲3的數組 int[] arr2=new int[3];
④、錯誤寫法:
//未指定數組長度 int [] arr1=new int[]; //數組前面[]不能寫長度 int [5] arr2=new int[5]; //靜態初始化不能寫長度 int [] arr3=new int[3]{1,2,3};
以上的寫法都是錯誤的,在編譯時會報錯。
⑤、訪問數組元素以及給數組元素賦值
數組是存在下標索引的,經過下標能夠獲取指定位置的元素,數組下標是從0開始的,也就是說下標0對應的就是數組中第1個元素,能夠很方便的對數組中的元素進行存取操做。
//聲明一個長度爲3的數組 int[] arr=new int[3]; //給arr第1個元素賦值1 arr[0]=1; //給arr第2個元素賦值2 arr[1]=2; //輸出 System.out.println(arr[0]); System.out.println(arr[1]);
上面的arr數組,咱們只能賦值三個元素,也就是下標從0到2,若是你訪問 arr[3] ,那麼會報數組下標越界異常。
⑥、數組遍歷
數組有個 length 屬性,是記錄數組的長度的,咱們能夠利用length屬性來遍歷數組。
//聲明一個元素爲1,2,3的int型數組 int[] arr=new int[]{1,2,3}; //遍歷arr數組 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } // 使用加強for循環foreach進行遍歷 for (int i : arr) { System.out.println(i); } //使用Arrays.toSting(數組名)進行遍歷 System.out.println(Arrays.toString(arr));
①、將數組元素反轉:
public class ArrayTest { public static void main(String[] args) { String[] str=new String[]{"AA","BB","CC","DD","EE","FF","GG"}; System.out.println("反轉前:"); for (int i = 0; i < str.length; i++) { System.out.print(str[i]+"\t"); } for(int i=0;i<str.length/2;i++){ String temp=str[i]; str[i]=str[str.length-i-1]; str[str.length-i-1]=temp; } System.out.println(); System.out.println("反轉後:"); for (int i = 0; i < str.length; i++) { System.out.print(str[i]+"\t"); } } }
②、線性查找:
public class ArrayTest1 { public static void main(String[] args) { String[] str=new String[]{"AA","BB","CC","DD","EE","FF","GG"}; String dest="BB"; boolean isFlag=true; for (int i = 0; i < str.length; i++) { if (dest.equals(str[i])){ System.out.println("找到了元素,位置在"+(i+1)); isFlag=false; break; } } if (isFlag) { System.out.println("對不起,沒有找到"); } } }
③、提到數組都離不開一個經典的排序——冒泡排序
public class ArrayTest2 { public static void main(String[] args) { int[] arr=new int[]{56,12,32,98,78,45,-45,3,55,-16}; for (int i = 0; i < arr.length; i++) { for (int j=0;j<arr.length-1-i;j++){ if (arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+"\t"); } } }
數組不管在Java,C,C++,PHP等語言中都有着很是重要的地位,因此學號數組基礎很是有必要。