Java中陣列的定義和使用教程(二)
陣列與方法呼叫
陣列是一個引用資料型別,那麼所有的引用資料型別都可以為其設定多個棧記憶體指向。所以在進行陣列操作的時候,也可以將其通過方法進行處理。
範例: 方法接受陣列
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[] {1,2,3}; printArray(data); } //定義一個專門進行陣列輸出的方法 public static void printArray(int temp[]) { for (int i = 0; i < temp.length; i++) { System.out.print(temp[i] + "、"); } } }
在方法的引數上由於需要接受一個整型陣列,所以就實現了一個最為基礎的引用傳遞操作。
範例: 方法返回陣列
public class ArrayDemo { public static void main(String args[]) { int data[] = init(); //接受陣列 printArray(data); } //此時的方法希望可以返回一個數組型別,所以返回值型別定義為整形陣列 public static int[] init() { return new int[] {1,3,4,6}; } //定義一個專門進行陣列輸出的方法 public static void printArray(int temp[]) { for (int i = 0; i < temp.length; i++) { System.out.print(temp[i] + "、"); } } }
那麼現在的陣列上發生了引用傳遞,那麼也就意味著方法接受陣列之後也可以對陣列進行內容修改。
範例: 定義一個方法,該方法可以實現陣列的內容的乘2
public class ArrayDemo { public static void main(String args[]) { int data[] = init(); inc(data); printArray(data); } public static void inc(int arr[]) { for(int x = 0; x < arr.length; x++) arr[x] *= 2; } //此時的方法希望可以返回一個數組型別,所以返回值型別定義為整形陣列 public static int[] init() { return new int[] {1,6}; } //定義一個專門進行陣列輸出的方法 public static void printArray(int temp[]) { for (int i = 0; i < temp.length; i++) { System.out.print(temp[i] + "、"); } } }
Java對陣列的支援
在Java本身給出的類庫之中也提供有對於陣列的操作的相關支援方法。
1、陣列排序:java.util.Arrays.sort(陣列名稱);
範例: 實現陣列排序操作
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[] {5,13,1,55,77}; char arr[] = new char[] {'D','C','F'}; java.util.Arrays.sort(data); java.util.Arrays.sort(arr); printArray(data); printArray(arr); } //定義一個專門進行陣列輸出的方法 public static void printArray(int temp[]) { for (int i = 0; i < temp.length; i++) { System.out.print(temp[i] + "、"); } System.out.println(); } public static void printArray(char temp[]) { for (int i = 0; i < temp.length; i++) { System.out.print(temp[i] + "、"); } System.out.println(); } }
只要是基本資料型別的陣列,Arrays.sort()都可以輕鬆地實現排序處理。
2、陣列拷貝:指的是將一個數組的部分內容替換掉另外一個數組的內容
方法(加工):System.arraycopy(原陣列名稱,原陣列開始點,目標陣列名稱,目標陣列開始點,拷貝長度)
範例: 實現陣列拷貝
原陣列A:1、2、3、4、5、6、7、8、9;
原陣列B:11、22、33、44、55、66、77、88、99;
替換後的陣列A:1、55、66、77、5、6、7、8、9;
public class ArrayDemo { public static void main(String args[]) { int dataA[] = new int[] {1,5,6,7,8,9}; int dataB[] = new int[] {11,22,33,44,66,77,88,99}; System.arraycopy(dataB,dataA,3); printArray(dataA); } //定義一個專門進行陣列輸出的方法 public static void printArray(int temp[]) { for (int i = 0; i < temp.length; i++) { System.out.print(temp[i] + "、"); } System.out.println(); } }
這些基本的陣列操作只能夠作為邏輯玩玩,開發用不上。
陣列資料統計
現在假設給你一個數組,要求可以統計該陣列的最大值、最小值、平均值、總和。這種操作肯定是要通過迴圈的操作形式完成。
範例: 基本實現
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[] {1,9}; int max = data[0]; int min = data[0]; int sum = 0; for(int x = 0; x < data.length; x++) { sum += data[x]; if(data[x] > max) max = data[x]; if(data[x] < min) min = data[x]; } System.out.println("最大值:" + max); System.out.println("最小值:" + min); System.out.println("資料總和:" + sum); System.out.println("平均值:" + (double)sum/data.length); } }
此時確實實現了所需要的功能,但是隨之會發現主方法中的程式碼有些多。主方法實際上就相當於一個客戶端呼叫,那麼既然是客戶端呼叫,裡面的程式碼應該也越簡單越好。
範例: 改進程式碼
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[] {1,9}; double result[] = stat(data); System.out.println("最大值:" + result[0]); System.out.println("最小值:" + result[1]); System.out.println("資料總和:" + result[2]); System.out.println("平均值:" + result[3]); } //此時需要返回的資料一共有四個,那麼一個方法只能夠返回一種資料型別,所以應該使用陣列返回 //陣列[0]為最大值、陣列[1]為最小值、陣列[2]為資料總和、陣列[3]為平均值 public static double[] stat(int data[]) { double reData[] = new double[4]; reData[0] = data[0]; reData[1] = data[0]; reData[2] = data[0]; for(int x = 1; x < data.length; x++) { reData[2] += data[x]; if(data[x] > reData[0]) reData[0] = data[x]; if(data[x] < reData[1]) reData[1] = data[x]; } reData[3] = reData[2] / data.length; return reData; } }
在整個進行程式開發的時候,主方法不要涉及到過於複雜的邏輯程式,只需要關注結果。
總結
到此這篇關於Java中陣列的定義和使用的文章就介紹到這了,更多相關Java陣列的定義和使用內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!