1. 程式人生 > >java中陣列常用方法總結

java中陣列常用方法總結

Java和C陣列的一些異同:

相同點:陣列名都是首元素的地址

不同點:C語言宣告變數可以直接定義陣列長度,java不可以

                java只有在為陣列分配變數時,可以宣告陣列長度

                java:int  [] a;

                        a = new int [3];

                C: int  a [3] ; 

                 java中,陣列名.length表示陣列長度,不用宣告,直接呼叫

陣列是引用型變數,語句 a = b;

代表將 b 的引用賦給 a,系統將會將分配給 a 的元素釋放

因此改變陣列b  的值,陣列 a 的值也會隨之改變

因此陣列的複製不能用上述方法,下面將陣列複製的方法

Java的System類庫中封裝好了一系列運算元組的方法

1. arraycopy

方法原型: public static void arraycopy(sourceArray,int index1,copyArray,index2,int length)

即從sourceArray的index1位置開始,後面length個元素,放到copyArray陣列從index2的位置

注意這裡的index1,2都是陣列的索引,即陣列的下標

如果copyArray陣列長度小於length,程式會崩潰

例項:建立main方法,自行測試

void test_arraycopy()
    {
    	int []a = {1,2,3,4,5};
    	int []b = {6,7,8,9,10};
    	System.arraycopy(a, 2, b, 3, 2);
    	System.out.println("\n通過複製以後的到的陣列為:");
    	for(int i:b)
    	{
    		System.out.printf("%d ",i);
    	}
    	System.out.println();
    }

執行結果:

通過複製以後的到的陣列為:
6 7 8 3 4 

2. copyOf和copyOFRange方法:

copyOf方法原型:public static float[] copyOf(float []original,int newLength)

從陣列的第一個元素開始複製,複製長度為length,若長度超過陣列原長,則超出元素為預設值0

該方法返回一個數組

void test_copyOf()
    {
    	int []a = {11,22,33,44,55}; 
    	int []b = Arrays.copyOf(a, 7);
    	System.out.println("測試copyOf函式,複製後得到的b陣列為");
    	for(int i:b)
    	{
    		System.out.printf("%d ",i);
    	}
    	System.out.println("\n通過toString方法輸出陣列\n"+Arrays.toString(b));
    }

執行結果:

測試copyOf函式,複製後得到的b陣列為
11 22 33 44 55 0 0

原陣列長度為 5 ,length為7,故複製後的陣列最後兩位為預設值 0

copyOfRange方法原型:public static double[] copyOfRange(double []original,int from,int to)

從original下標為from的位置開始複製,到to-1的位置結束,返回一個長度為to-from的陣列

void test_arrayOfRange()
    {
    	int []a = {55,33,44,22,11}; 
    	int []b = Arrays.copyOfRange(a, 1, 4);
    	System.out.println("測試copyOfRange方法:");
    	System.out.println(Arrays.toString(b));
    }

執行結果:

測試copyOfRange方法:
[33, 44, 22]

3. 改進遍歷陣列的方法:

Arrays.toString(陣列名)

for(迴圈體,陣列名)

{

System.out.println(i);

}

或者用 Arrays.toString(陣列名)方法

void print_array()
    {
    	int []a = {1,2,3,4,5};
    	System.out.println("採用改進方法遍歷陣列a,輸出結果:");
    	for(int i:a)
    	{
    		System.out.printf("%d ",i);
    	}
    	System.out.println("呼叫toString方法輸出陣列b");
    	System.out.println(Arrays.toString(b));
    }

執行結果:

採用改進方法遍歷陣列a,輸出結果:
1 2 3 4 5 
呼叫toString方法輸出陣列b
[1, 2, 3, 4, 5]

4. 陣列的排序:sort方法

該方法有兩個函式原型:

public static void sort(doule a[])
public static void sort(doule a[],int start,int end);

第一種,將陣列按升序全排序
第二種從索引為start到索引為end-1的位置,升序排序

void test_arrayOfRange()
    {
    	int []a = {55,33,44,22,11}; 
    	int []b = Arrays.copyOfRange(a, 1, 4);
       	Arrays.sort(a, 1, 4);
    	Arrays.sort(b);
    	System.out.println("排序後b陣列為:");
    	for(int i:b)
    	{
    		System.out.printf("%d ",i);
    	}
    	System.out.println("\n排序後a陣列為:");
    	for(int i:a)
    	{
    		System.out.printf("%d ",i);
    	}
    	System.out.println();
    }

執行結果:

排序後b陣列為:
22 33 44 
排序後a陣列為:
55 22 33 44 11

5. 在陣列中查詢一個數的方法:binarySearch

方法原型:public static int binarySearch(double [] a,double number)

返回要尋找的數number的索引,若沒查詢到,則返回一個負數

void test_binarySearch()
    {
    	int a[] = {1,2,3};
    	int x;
    	x= Arrays.binarySearch(a, 2);
    	System.out.println("陣列a為:");
    	System.out.println(Arrays.toString(a));
    	System.out.println("數字x在陣列中的索引(下標)為:"+x);
    }

執行結果:

陣列a為:
[1, 2, 3]
數字x在陣列中的索引(下標)為:1