2008年12月16日火曜日

配列

  • 宣言
    int a[] = new int[10];
     int a[][];
     int a, b[];
     int func(int dt)[] 戻り値がint配列型

    int[] a = new int[10];
     int[][] a;
     int[] a,b[];
     a=(int[])b.clone();
     if( a instanceof int[]) int配列型の確認
     int[] func(int dt) 戻り値がint配列型

    int a[] = { 1,2,3,4,5 }; 初期値を与える場合new不要
  • 領域確保
    int a[]; 領域未設定 =null
    a = new int[10]; 領域確保、各要素は=0で初期化
  • 要素数
    lengthフィールドで取得(配列オブジェクトの変数?)
    int a[] = new int[10];
    n = a.length;
    ※メソッドではない

  • コピー
    個別:a[1] = b[2];
    参照:a=b; ※アドレスのコピー、実態は同じ
    複写:a=(int[])b.clone();
  • cloneによる複写
    a=(int[])b.clone();
    b配列と同じサイズの領域を確保し、先頭アドレスをaにセット
    ※コピー先の事前領域確保は不要
    ※多次元配列はそれぞれ処理が必要
    int aa[][];
    int bb[][];
    for(int i=0; i<aa.length; i++)
    bb[i] = (int[])aa[i].clone();
  • arraycopyによる複写
    System.arraycopy(from,0,to,0,from.length);
    ※各要素をコピーするので、コピー先は事前に領域確保が必要

0 件のコメント: