Javaの配列の仕組みと使い方のサンプルです。
| 仕組み | 配列とは | 
| 作成 | 初期化して作成 / 要素の数を宣言して作成 / 同じ値を設定する(fill) | 
| 取得する | 要素を取得(for文、拡張for文、forEach) / 要素を検索 | 
| 要素数を取得(length) / 最後の要素を取得(length-1) | |
| 変更 | 配列の値を変更 | 
| ソート/コピー | 要素をソート / 要素をコピー | 
| 変換 | 配列をリストに変換 / リストを配列に変換 | 
| 使用する | メソッドの引数と戻り値が配列 | 
配列とは
| データ型[] a = { 値1 , 値2 , 値3 }; | 
上記は複数の値を変数aに代入しています。
この変数aは、配列として、複数の値を持ちます。
配列の図
- 1つの変数で同じ型の複数の値を保持できます。
- 各項目を要素(element)といいます。
- 要素の位置をインデックス(添字)で管理します。上記図では[0]、[1]、[2]、[3]です。
- int等の基本型だけでなくInteger等の参照型も保持できます。
- インデックスの先頭は0から始まります。
- Javaの配列は固定長です。後から要素の追加や削除は不可能です。
- 後から配列の数を変更する場合はコレクションのArrayListを使用します。
 Java ArrayListとListの使い方のサンプル
初期化して作成
配列の宣言と同時に値を設定します。
  String[] a = {"赤","黄","青"};  // String型の配列
  System.out.println(a[0]);//赤
  System.out.println(a[1]);//黄
  System.out.println(a[2]);//青
		
  int[] b = {1,2,3};  // int型の配列
  System.out.println(b[0]);//1
  System.out.println(b[1]);//2
  System.out.println(b[2]);//3
		
  Integer[] c = {4,5,6};  // Integer型の配列
  System.out.println(c[0]);//4
  System.out.println(c[1]);//5
  System.out.println(c[2]);//6
		
  byte [] d = {-128,5,127};  // byte型の配列
  System.out.println(d[0]);//-128
  System.out.println(d[1]);//5
  System.out.println(d[2]);//12716行目は、バイト配列です。データ型がバイト(byte)型で値が-128~127までの数値です。
要素の数を宣言して作成
先に配列の要素の数を宣言して値は後から追加します。
public class Test1 {
	public static void main(String[] args) {
		String[] color = new String[3]; // 要素数の3を指定
		color[0] = "赤"; // 値を設定
		color[1] = "黄";
		color[2] = "青";
		// color[3] = "黒"; ArrayIndexOutOfBoundsExceptionが発生
		System.out.println(color[0]);// 赤
		System.out.println(color[1]);// 黄
		System.out.println(color[2]);// 青
	}
}
7行目のように4つめの値を追加しようとするとArrayIndexOutOfBoundsのエラーが発生します。
同じ値を設定する(fill)
| Arrays.fill(配列の変数, 設定する値) | 
fillメソッドは同じ値を設定します。
  String[] color = new String[3];
  Arrays.fill(color, "オレンジ");
		
  System.out.println(color[0]); //オレンジ
  System.out.println(color[1]); //オレンジ
  System.out.println(color[2]); //オレンジ要素を取得(for文、拡張for文、forEach)
要素の位置は0から始まります。
for文とforEachはループで要素を順に取得します。
   String[] color = { "赤", "黄", "青" }; // 配列
   System.out.println(color[0]); // 赤
   System.out.println(color[1]); // 黄
   System.out.println(color[2]); // 青
   // for文
   for (int i = 0; i < color.length; i++) {
      System.out.println(color[i]); // 赤 黄 青
   }
   // 拡張for文 加算(i++)の表記なし
   for (String a : color) {
     System.out.println(a); // 赤 黄 青
   }
   // forEach + ラムダ式
   Arrays.stream(color).forEach(c -> System.out.println(c));// 赤 黄 青
   // forEach + メソッド参照
   Arrays.stream(color).forEach(System.out::println);// 赤 黄 青18行目の変数c以降はラムダ式です。forEachメソッドは、Java8で導入されました。
21行目のSystem.out::printlnは、メソッド参照です。
要素を検索
for文でループさせて配列の要素を一つずつ確認していきます。
    String[] color = { "赤", "黄", "青" }; // 配列
    boolean b1 = false;
    for (String c : color) {
      if (c.equals("黄")) {
        b1 = true;
        break;
      }
    }
    System.out.println(b1); // true要素数を取得
lengthプロパティで配列の要素数を取得します。
  String[] color = {"赤","黄","青"}; // 配列
		
  System.out.println(color.length); // 3最後の要素を取得(length-1)
lengthプロパティで要素数を取得し1引いてインデックスとして指定します。
  String[] color = {"赤","黄","青"}; // 配列
		
  System.out.println(color[color.length-1]); // 青配列の値を変更
インデックス(添字)で変更したい要素を指定します。
	String[] arr = { "赤", "黄", "青" }; // 配列
	arr[1] = "オレンジ";
	System.out.println(arr[0]); // 赤
	System.out.println(arr[1]); // オレンジ
	System.out.println(arr[2]); // 青3行目は、文字列を配列の変数に代入しています。
要素をソート
Arrays.sortを使用します。
	int[] arrNum = { 100, 2, 99 }; // 配列 数値をソート
	Arrays.sort(arrNum);
	System.out.println(Arrays.toString(arrNum)); // [2, 99, 100]
	String[] arrStr = { "da", "abb", "pccc" }; // 配列 文字列をソート
	Arrays.sort(arrStr);
	System.out.println(Arrays.toString(arrStr)); // [abb, da, pccc]3行目は、2,99,100になります。100,2,99にはなりません。
7行目は、先頭の文字のabc順に表示されます。
要素をコピー
| public static void arraycopy(コピー元配列,開始位置,コピー先配列,開始位置,コピーする要素数) | 
Systemクラスのarraycopyメソッドで配列をコピーします。
	String[] arrFrom = { "赤", "黄", "青" }; // コピー元の配列
	String[] arrTo = new String[3]; // コピー先の配列
	System.arraycopy(arrFrom, 0, arrTo, 0, arrFrom.length);
	arrTo[1] = "オレンジ"; // コピー先の配列を変更
	System.out.println(Arrays.toString(arrFrom)); // 赤 黄 青
	System.out.println(Arrays.toString(arrTo)); // 赤 オレンジ 青6行目は、コピー先の配列の値を変更しています。
7,8行目は、コピー先の値は変わりましたが、コピー元の値は変更されていません。
配列をリストに変換
CollectionsクラスのaddAllメソッドを使用します。リストを変更しても元の配列は変更されません。
	String[] arr = { "赤", "黄", "青" }; // 配列
	List<String> list = new ArrayList<>(); // リスト
	Collections.addAll(list, arr);
	System.out.println(list); // [赤, 黄, 青]リストは参照型のみ設定可能のため、1行目の配列の値がintなどの基本型の場合は4行目でコンパイルエラーになります。
リストを配列に変換
toArrayメソッドでリストの値を配列にします。
	// リスト
	List<String> list = new ArrayList<>(Arrays.asList("赤", "青"));
	// 配列
	String[] arr = new String[list.size()];
	// リストから配列を作成
	list.toArray(arr);
	System.out.println(Arrays.toString(arr));// [赤, 青]4行目は、配列で中身は空です。配列の要素数はリストのサイズでセットしています。
8行目のtoStringメソッドは、配列を引数にして文字列を返します。
メソッドの引数と戻り値が配列
  String[] color = {"赤","黄","青"}; // 配列
  String[] b = getColor(color);
  private static String[] getColor(String[] c1) {
    return c1;
  }2行目は、呼び出し元のメソッドです。引数と戻り値が配列です。
4行目は、定義されたメソッドです。引数と戻り値が配列です。
呼び出し元のメソッドの引数の変数名(color)と定義されたメソッドの引数の変数名(c1)は異なっていても使用できます。
関連の記事
Java 2次元配列のサンプル
Java 配列からリスト・セットを作成(addAll/asList)
Java バイト配列の作成と復号のサンプル(getBytes)
