Javaの配列

3521 ワード

/*
*配列の使用
*1、データ:同じ種類のデータの順序付け結合
*2、配列の長さは決まっており、作成されると変更できません
*3、配列内の各要素は同じでなければならない.混合タイプは現れない.
*4、要素のデータ型は任意で、主に基本型と参照型を含む
*5、配列変数は参照変数に属し、配列はオブジェクトに属するため、配列はスタックに格納され、各要素はそのオブジェクトのメンバー変数に相当します.
 * 
*注意:配列は宣言時にスタックスペースを割り当てず、長さを指定する必要はありません.配列がインスタンス化されると、JVMはスタックスペースを割り当てるので、配列の長さを指定する必要があります.
 */
import java.util.Arrays;;
public class Array_4_21_01 {
public static void main(String[] args) {
int[] array1;//配列変数を宣言し、長さを指定しない
array1 = new int[10];//配列インスタンス化、長さ指定が必要
System.out.print(「一次元配列が来た->」);
for (int i = 0; i < array1.length; i++) {
array1[i] = i;
System.out.print(array1[i]+"");
}
System.out.println("");
System.out.println(Arrays.toString(array1));
System.out.println("-------------------------------");
/*
*要素が参照タイプの配列
*/
Man[] mans;//Man参照タイプの配列変数を宣言
mans = new Man[5];//このManリファレンスタイプの配列をインスタンス化
Man m1 = new Man(1, 27);
Man m2 = new Man(2, 28);
mans[0] = m1;
mans[2] = m2;
System.out.println(「mansの配列値は」+Arrays.toString(mans));
//静的初期化
int[] array2 = {2,5,9};
Man[] mans2 = {
new Man(1,29),
new Man(2,30)
};
//動的初期化
int[] array3 = new int[2];
array3[0] = 1;
array3[1] = 2;
System.out.println(「array 3の配列値は」+Arrays.toString(array 3);
//配列のデフォルト初期化配列の要素はクラスのインスタンス変数に相当するため、配列が空間を割り当てられると、各要素はインスタンス変数に従って暗黙的に初期化される
/*
* int[] a = new int[2]; ->[0,0]に初期化
*boolean[]b=new boolean[2]->[false,falseに初期化]
*String[]s=new String[2]->[null,nullに初期化]
*/
//配列のcopy、Systemを使う.静的方法だシステムarraycopy(元の配列、元の配列の開始位置、ターゲットの配列、ターゲットの配列の開始位置、コピーのいくつかの要素);
String[] s1 = {"Microsoft","IBM","Sun","Oracle","Apple"};
String[] s2 = new String[5];
System.arraycopy(s1, 0, s2, 0, s1.length);
System.out.println("s 2この配列は"+Arrays.toString(s 2);
//エンハンスメントforループで配列を巡る
for (String e : s2) {
System.out.println(e);
}
//配列ソート、主に要素の適用タイプと基本タイプによって2種類に分けられます.要素は参照タイプの配列ソートです.後でコンテナを組み合わせて理解します.
//二分法検索
int[] array4 = {1,3,232,23,543,12,59};
Arrays.sort(array4);//二分法を使用して検索する前に、配列をソートする必要があります.
System.out.println(「この要素のインデックスは」+Arrays.binarySearch(array 4,12));
//充填
Arrays.fill(array4, 1, 4,100); //配列array 4をインデックス位置1から3ビットで100に塗りつぶす
System.out.println(Arrays.toString(array4));
//asList(容器理解による)
/*
*多次元配列、多次元配列の宣言および初期化は、低次元から高次元への順序で行われます.
*/
//2 D配列の静的初期化
int[][] array5 = {
{1,2,3},
{3,4},
{2,5,8,9}
};
System.out.println(「array 5という2次元配列の1次元配列値は」+Arrays.toString(array 5[0]);
for (int[] e : array5) {
for (int f : e) {
System.out.println(f);
}
}
//2 D配列の動的初期化
int[][] array6 = new int[3][];
array6[0] = new int[]{1,2,3};
array6[1] = new int[]{3,4};
array6[2] = new int[]{2,5,8,9};
System.out.println("array 6という配列[2][3]の値は"+array 6[2][3]);
//2次元配列を取得する1次元配列の長さはarray 6である.length  ;  array6[0].lengthは、2 D配列の最初の配列を取得する長さです.
  }
}
class Man {
private int age;
private int id;
public Man (int id,int age) {
super();//
this.age = age;
this.id = id;
}
}
/*問題を考える
*1、なぜ配列という概念が必要なのか?
 * 
*2、配列を切り出す3つの初期化方式.
 * 
*3、配列の長さは可変ですか?
 * 
*4、配列の複製はどのクラスの方法で実現したほうがいいですか?
 * 
*5、Arrays類の使い方を話す
 * 
 */