陣列

陣列可以說是相同類型的資料集合,基本類型(int,float,string等等)可以當作陣列的內容,也可以把自定類型(自定類別)當做陣列元素

注意
1.陣列名稱(或變數)內容儲存第一個元素的記憶體位址,
2.可使用索引值取得陣列元素
3.for-each 和 length
4.陣列的排序(Arrays.sort)和搜尋(Arrays.binarySearch)
5.陣列的傳值(共享)和傳址(複製)(Arrays.copyof)
6.2(多)維陣列地宣告和存取


各範例規則如下

   1:          int[] i1 ;//使用陣列先宣告
   2:          i1 = new int[5];//再建立(實體化或建立實體)
   3:          
   4:          int[] i2 = new int[5];//同時宣告和建立
   5:          
   6:          String s3[] = {"c678","b345","a123","e999","d100"};//宣告陣列時,中括號也可以放在名稱之後,順便初始化
   7:          
   8:          for(int i=0; i<i1.length; i++)//使用length取得陣列長度
   9:          {
  10:              i1[i] = i;//使用for迴圈加上索引值設定陣列內容
  11:          }
  12:          
  13:          for(String s:s3)//使用for-each取得陣列內容
  14:          {
  15:              System.out.println(s);//c678 b345 a123 e999 d100 (s的內容為s3陣列元素的內容)
  16:          }
  17:          
  18:          Arrays.sort(s3);//陣列排序
  19:          
  20:          for(String s:s3)//使用for-each取得陣列內容
  21:          {
  22:              System.out.println(s);//a123 b345 c678 d100 e999 (s的內容為s3陣列元素的內容)
  23:          }
  24:          
  25:          //使用 Arrays.binarySearch 尋找指定陣列元素,並回傳陣列索引值,如果找不到,會將指定元素加入陣列排序(但不影響原陣列)再回傳該負索引值-1
  26:          int arrayIndex = Arrays.binarySearch(s3, "c100");
  27:          System.out.println(arrayIndex);//-3
  28:          
  29:          
  30:          String[] s5 = Arrays.copyOf(s3, s3.length);//陣列傳值,使用Arrays.copy是複製一份新的陣列,修改s3不影響s5
  31:          s3[s3.length-1] = "f888";
  32:          for(String s:s5)//使用for-each取得陣列內容
  33:          {
  34:              System.out.println(s);//a123 b345 c678 d100 e999 (s的內容為s5陣列元素的內容)
  35:          }
  36:          
  37:          String[] s4 = s3;//陣列傳址,因為陣列存放第一個元素的記憶體位址所以指定給另一個陣列,事實上是共享該陣列,所以修改s3會影響s4
  38:          s3[s3.length-1] = "g777";
  39:          for(String s:s4)//使用for-each取得陣列內容
  40:          {
  41:              System.out.println(s);//a123 b345 c678 d100 g777 (s的內容為s4陣列元素的內容)
  42:          }
  43:          
  44:          int[][] i3;//宣告多維陣列
  45:          i3 = new int[2][2];//建立相同維度的2維陣列
  46:          i3[0][0] = 0;//使用索引值設定元素
  47:          i3[0][1] = 1;
  48:          i3[1][0] = 2;
  49:          i3[1][1] = 3;
  50:          
  51:          int[][] i4 = {{0,1},{2,3}};//同時宣告和建立(和i3相同)
  52:          
  53:          int[][] i5;//宣告多維陣列
  54:          i5 = new int[2][];//建立不規則的2維陣列
  55:          i5[0] = new int[1];//第1個陣列只有1個元素
  56:          i5[1] = new int[3];//第2個陣列有3個元素
  57:          i5[0][0] = 0;
  58:          i5[1][0] = 1;
  59:          i5[1][1] = 2;
  60:          i5[1][2] = 3;
  61:          
  62:          int[][] i6 = new int[][]{{0},{1,2,3}};//同時宣告,建立,初始化不規則多維陣列