Java 06(Arrays)の使用


1.8 Arrays


Single-dimensional Array

  • 宣言方法
  • int [] a = new int[10];
    int a[] = new int[10];
  • 初期値
    int,long,float : 0
    boolean : false
    char : ASCII CODE 0
    string, frame : null
  • ex>
    class arNew{
    	public static void main(String[] args){
    		int[] a = new int[10];
            int b[] = new int[10]l
            int i;
            
            for(i=0;i<5;++i){
    			a[i] = (i+1)*10+1;
                b[i] = (i+1)*100 +5;
    		}
            
            //run-time error
    		for(i=0;i<15;i++){ 
    			System.out.println(a[i]+" "+b[i]);
    		}
    	}
    }
  • ここで重要なのは、C言語はエラーが発生したときにエラーが発生しやすく、Javaはエラーが発生したときにエラーメッセージ
  • を投げ出すことです.
  • Array value assignment
    newを使用することなく、配列を作成できます.
  • int a[]={1,3,5,7,9};

  • a.length
    配列の長さ(要素数)を返します.

  • 割り当てarray copy(浅いコピー)の使用
    b=a;
    しかし、この方法は、新しい空間を作成するのではなく、aのメモリアドレスをbに渡すため、a配列を使用してseo値を変更すると、bの値も変更されます.
  • class arCopy{
    	public static void main(String[] args){
    		int a[] = {11,13,15,17,19,21,23};
            int b[] = new int[a.length];
            int i;
            
            b=a;
            
            for(i=0;i<a.length;i++){
            	System.out.println(a[i]+" "+b[i]);
            }
    	}
    }
    bはaのメモリのみを指す.
    したがって,bに割り当てられたメモリ領域はあまり意味がない.
    では、bにはどのくらいのメモリ領域が割り当てられていますか.JAVAでは自動的に解除される가비지 컬렉터が発生し、それを解除します.
    Arraycopy()を使用した
  • アレイコピー(深いコピー)
    System.arraycopy(srcArray,i,destArray,j,n);
    src Array:コピーする奴
    i:レプリカ開始位置
    destray:コピーされるやつ
    j:レプリカの開始位置
    n:
  • ex>
    class arCopy{
    	public static void main(String[] args){
    		int a[] = {11,13,15,17,19,21,23};
            int b[] = new int[a.length];
            int i;
            System.arraycopy(a,1,b,2,3);
            
            for(i=0;i<a.length;i++){
            	System.out.println(a[i]+" "+b[i]);
            }
    	}
    }


    その結果、aの1番位置から3つ選び、bの2番位置から貼り付けます.

    Multi-dimensional Array

  • Two dimensional Array
  • int a[][] = new int[3][4];
    int[][] a = new int[3][4];
    
    a.length => 3(row) (y축)
    a[0].length => 4(column) (x축)
  • Value Assignment
  • int a[][] = {{10,11,12},{20,21,22},{30,31,32},{40,41,42}};
    ex>
    class arYeeChaWon {
    	public static void main(String[] args)
    	{
    		int a[][] = { {10,11,12}, 
            			{20,21,22}, 
                        {30,31,32}, 
                        {40,41,42} };
    		int i, j, hab;
    		System.out.println("a.length : " + a.length);
    		System.out.println("a[0].length : " + a[0].length + '\n');
    		for (i=0 ; i<a.length ; i++)
    		{
    			hab = 0;
    			for (j=0 ; j<a[0].length ; j++)
    			{
    				System.out.print(a[i][j] + " ");
    				hab += a[i][j];
    			}
    			System.out.print(" " + hab + "\n");
    		}
    	}
    }
  • Three-dimensional Array
  • boolean[][][] a = new boolean[3][4][5];
    
    int[][][] a = {{{1,2},{3,4}},{{5,6},{7,8}}};