[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]
として要素にアクセスする「配列内の要素」と呼ばれます. イニシアチブの初期化
次のことができます.
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
メソッドであり、出力時に各要素に区切り記号を付けずに直接出力する.(他のアレイの場合、出力タイプ@アドレス)
アレイのコピー
配列は作成されると長さを変更できないため、より多くのストレージスペースが必要な場合は、より大きな配列を作成し、以前の配列から内容をコピーできます.
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 배열 두개 합치기
Reference
この問題について([java]9/9学習履歴), 我々は、より多くの情報をここで見つけました https://velog.io/@0hhanum/java-99-학습기록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol