本節重點思維導圖
數組
public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//強制開辟內存空間 int c[] = new int [8]; int[] d = {3,4,5,67}; int[] e = new int[] {3,4,5}; System.out.println(d[2]); }
例題:產生1到100之間所有奇數組成的數組並輸出。要求每10個一行輸出
public class Demo { public static void main(String[] args) { int[] array = new int[50]; for (int i = 0; i < 50; i++) { array[i] = 2 * i + 1; } for (int i = 0; i < 50; i++) { if (i % 10 == 0) System.out.println(); System.out.print(array[i] + "\t"); } } }
多維數組
Arrays 類
java.util.Arrays 類能方便地操作數組,它提供的所有方法都是靜態的
- 給數組賦值:通過 fill 方法。
- 對數組排序:通過 sort 方法,按升序。
- 比較數組:通過 equals 方法比較數組中元素值是否相等。
- 查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。
額外補充:
存儲在數組當中的數據都屬於同一數據類型
比如說一個 int 類型的數組:
int[] arr = { 'a', 25, 45, 78, 'z' }; System.out.println(Arrays.toString(arr));
輸出結果是:[97, 25, 45, 78, 122]
存放進去的 char 類型的字符會自動轉為 int 類型的 ASCII 碼。
上面的代碼中就將 a 轉成了 97,z 轉成了 122。
實現數組和字符串的轉換處理
public class Test { public static void main(String args[]) { String str = "helloworld"; char[] data = str.toCharArray();// 將字符串轉為數組 for (int x = 0; x < data.length; x++) { System.out.print(data[x] + " "); data[x] -= 32; System.out.print(data[x] + " "); } System.out.println(new String(data)); } }
冒泡排序
public class BubbleSort { /** * N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數為(N-i)次,所以可以用雙重循環語句,外層控制循環多少趟,內層控制每一趟的循環次數。 * @param args */ public static void main(String[] args) { int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8}; for(int i=0;i < arr.length-1;i++) {//外層循環控制排序趟數 for(int j=0; j< arr.length-i-1;j++) { //內層循環控制每一趟排序多少次 // 把小的值交換到前面 if (arr[j]>arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } System.out.print("第"+(i+1)+"次排序結果:"); //列舉每次排序的數據 for(int a=0;a<arr.length;a++) { System.out.print(arr[a] + "\t"); } System.out.println(""); } System.out.println("最終排序結果:"); for(int a = 0; a < arr.length;a++) { System.out.println(arr[a] + "\t"); } } }
選擇排序
public class Start { public static void main(String[] args) { int[] arr={20,60,51,81,285,12,165,51,81,318,186,9,70}; for(int a:arr) { System.out.print(a+" "); } System.out.println("\n"+"---------------從小到大---------------"); arr=toSmall(arr); for(int a:arr) { System.out.print(a+" "); } System.out.println("\n"+"---------------從大到小---------------"); arr=toBig(arr); for(int a:arr) { System.out.print(a+" "); } } // 從大到小 public static int[] toSmall(int[] arr) { //遍歷數組里除最后一個的其他所有數,因為最后的對象沒有與之可以相比較的數 for(int i=0;i<arr.length-1;i++) { /*遍歷數組里沒有排序的所有數,並與上一個數進行比較 *“k=i+1”因為自身一定等於自身,所以相比沒有意義 *而前面已經排好序的數,在比較也沒有意義 */ for(int k=i+1;k<arr.length;k++) { if(arr[k]<arr[i])//交換條件(排序條件) { int number=arr[i]; arr[i]=arr[k]; arr[k]=number; }//交換 } } return arr; } // 從小到大 //和前面一樣 public static int[] toBig(int[] arr) { for(int i=0;i<arr.length-1;i++) { for(int k=i+1;k<arr.length;k++) { if(arr[k]>arr[i]) { int number=arr[i]; arr[i]=arr[k]; arr[k]=number; } } } return arr; } }