[java]9/9学習履歴


整列


同じタイプの複数の変数を組み合わせます.
// ex) 5개의 int 값을 저장할 수 있는 배열 선언

int[] score = new int[5];

/*
이렇게 선언 후 생성된 배열에는 default 로 0 이 들어가있다. (new 로 생성하는게 0으로 초기화한다고 생각)
 score[0] ~ [4] 까지 (길이 5로 생성하면 0부터 4까지) 값을 저장할 수 있으며, 변수 score 은 배열을 다루는 데 필요한
 참조변수일 뿐 값을 저장하기 위한 공간은 아니다.
 */
配列は、各記憶空間が連続的に配列されている.

アレイの宣言と作成


必要なタイプの変数を宣言し、変数またはタイプに[]を付けて配列を表します.この場合[]はタイプの後に付けてもよいし、変数名の後に付けてもよい.int[] score; or int score[];

アレイの作成


配列を宣言->作成する配列を処理するために、参照変数のみにスペースを作成します.
値を格納するスペースを作成するには、配列を作成する必要があります.=>すべての値を0にリセットします.int[] score = new int[5] (アレイ長は0度)
左は宣言参照変数(配列を含むことができる)で、右は生成配列です.したがって、int[] score;は生成配列ではない.
正確には、「参照変数の宣言」は正しい言い方ですが、配列方法も宣言されます.

配列の長さとインデックス


生成された配列の各記憶領域は、array[index]として要素にアクセスする「配列内の要素」と呼ばれます.
  • 配列の長さが整数(0を含む)の整数整数整数整数、整数int
  • array.長さをlengthで決定し、配列が作成されると長さを変更できません.
  • イニシアチブの初期化


    次のことができます.
    int[] array = new int[]{1,2,3,4,5}; // 배열 선언, 생성, 초기화 동시에 ```
    
    // 또는
    
    int[] array = {1,2,3,4,5} // new int[] 를 생략할 수 있다. 
    // 다만 배열의 선언과 생성을 따로 하는 경우, 위와 같은 방식은 사용불가.
    int[] array;
    array = {1,2,3}; // 이렇게는 X
    array = new int[]{1,2,3,4}; // Ok
    
    // {} 안을 비워둘 시, '길이'가 0인 배열이 생성된다.

    アレイ出力

    int[] array = {1,2,3};
    for(int i: array){
    	System.out.println(i);
    } // 혹은
    for(int i=0;i<array.length;i++){
    	System.out.println(array[i]);
    }
    // 이런 방식으로도 가능하겠지만, 단순히 배열 내용을 출력하고자 할 때는 다음과 같은 방법도 가능.
    
    System.out.println(Arrays.toString(array));
    // Arrays 클래스의 toString() 메소드를 이용.
  • は例外であり、char配列はprintlnメソッドであり、出力時に各要素に区切り記号を付けずに直接出力する.
    (他のアレイの場合、出力タイプ@アドレス)
  • アレイのコピー


    配列は作成されると長さを変更できないため、より多くのストレージスペースが必要な場合は、より大きな配列を作成し、以前の配列から内容をコピーできます.
  • for fontレプリケーション
  • int[] arr = {1,2,3};
    int[] tmp = new int[arr.length * 2];
    for(int i=0; i<arr.length; i++;){
    	tmp[i] = arr[i]
    }
    arr = tmp;
    // arr 은 배열이 아니라, int 배열을 가리키는 참조변수이다. 따라서 길이 6 인 tmp를 가리킬 수 있음!
    // 길이는 '배열'의 길이를 말하는 것. 참조변수와는 분리해서 생각해야함.
    
    上記の例では、参照変数arrおよびtmpは、同じ配列{1,2,3,0,0}を指す.すなわち、アレイarrとアレイtmpは、名前が異なるだけで、同じアレイである.
    以前arrで指定した{1,2,3}は使用できません.
    配列は参照変数のみでアクセスできるため、自分の参照変数を指さない配列はJVMの不要コレクタによって自動的にメモリから削除されます

    System.arraycopy()を使用して配列をコピーする


    システムクラスのarraycopy()をfor文の代わりに使用すると、配列をより簡単かつ迅速にコピーできます.
    for文は配列内の各要素にアクセスしてコピーされますが、arraycopy()は指定した範囲の値を一度に完全にコピーします.
    これは、アレイの特性、すなわち各要素が連続的に格納されているためです.
    int[] oldArray = {1,2,3};
    int[] newArray = new int[6];
    System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
    // 매개변수 왼쪽부터-> 복사할 배열, 시작 인덱스, 새로운 배열, 시작 인덱스, 요소의 개수
    
    char[] oldArray = {'a', 'b', 'c'};
            char[] oldArray2 = {'d', 'e'};
            char[] newArray = new char[oldArray2.length + oldArray.length];
            System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
            System.out.println(newArray);
            System.arraycopy(oldArray2, 0, newArray, oldArray.length, oldArray2.length);
            System.out.println(newArray);
    
    // char 배열 두개 합치기