[Java]javaの定式5章を振り返る-並べ替え
34912 ワード
整列
同じタイプの様々な変数を組み合わせます!
宣言、作成、初期化
上記のように、同じタイプに関連する複数の変数を1つのグループに指定できます.
配列は宣言と作成に分けられます.
宣言:アレイアドレスを格納する場所、すなわちアレイに必要な変数
≪作成|Create|ldap≫:ストレージ・アレイ値のスペースを作成します.public static void main(String[] args) {
int[] arr; // 배열 선언
arr = new int[5]; // 5개의 int 값을 저장할 수 있는 공간 생성
}
もちろん、宣言と同時にスペースを作成して値を初期化することもできます.public static void main(String[] args) {
int[] arr = new int[5];// 선언과 동시에 생성
}
初期化public static void main(String[] args) {
int[] arr = {1,2,3,4,5};// 선언과 동시에 생성
}
同じ配列をコピーしたいなら?public static void main(String[] args){
int[] arr = {1,2,3,4,5};
int[] arr2 = arr; // 가능할까?
arr[2] = 100;
System.out.println(Arrays.toString(arr2));
}
> [1, 2, 100, 4, 5]
arr 2も同じ値を有する.ただし、アドレスをコピーするだけなので、arrとarr 2は同じメモリアドレスを表示しています.
したがって、arrの値を変更すると、arr 2で呼び出されたときに変更された値が表示されます.
アレイの有効な方法
配列を処理するのに非常に有用な方法があります.配列自体のメソッドとArraysオブジェクトのメソッドを使用します.
配列の長さ
배열.length
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
System.out.println(arr.length);
>> 5
}
アレイ出力
Arrays.toString(배열)
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
System.out.println(Arrays.toString(arr));
>> [1,2,3,4,5]
}
Arraysを使用したアレイの処理(方法)
// toString, deepToString, equals, deepEquals
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int[] arr2 = {1,2,3,4,5};
int[][] arr2D = {{1,2,},{3,4}};
int[][] arr2D2 = {{1,2,},{3,4}};
System.out.println("Arrays.toString(arr) : " + Arrays.toString(arr));
System.out.println("Arrays.equals(arr,arr2) : " + Arrays.equals(arr,arr2));
System.out.println("arr.equals(arr2) : " + arr.equals(arr2));
System.out.println("Arrays.deepToString(arr2D) : " + Arrays.deepToString(arr2D));
System.out.println("Arrays.deepEquals(arr2D, arr2D2) : " + Arrays.deepEquals(arr2D, arr2D2));
}
>> Arrays.toString(arr) : [1, 2, 3, 4, 5]
>> Arrays.equals(arr,arr2) : true
>> arr.equals(arr2) : false
>> Arrays.deepToString(arr2D) : [[1, 2], [3, 4]]
>> Arrays.deepEquals(arr2D, arr2D2) : true
配列のアドレスではなく、配列の値をコピーします.// 주소 복사 vs copyOf 사용
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int[] arr2 = arr;
int[] arr3 = Arrays.copyOf(arr, arr.length);
System.out.println("arr = " + arr); // 같은 메모리 주소
System.out.println("arr2 = " + arr2); // arr와 같은 메모리 주소
System.out.println("arr3 = " + arr3);
arr[3] = 100;
System.out.println("arr[3] = " + arr[3]);
System.out.println("arr2[3] = " + arr2[3]);
System.out.println("arr3[3] = " + arr3[3]);
}
> arr = [I@28d93b30
> arr2 = [I@28d93b30
> arr3 = [I@1b6d3586
> arr[3] = 100
> arr2[3] = 100
> arr3[3] = 4
String class
Stringは、文字列と呼ばれるデフォルトのデータ型とは異なるクラス(オブジェクト)です.
String char配列に機能(メソッド)を追加する
Stringメソッド
public static void main(String[] args) {
//String 메소드
String string = "ABCDE";
System.out.println("string.charAt(3) = " + string.charAt(3)); // 문자열에서 특정 인덱스 문자 구하기
System.out.println("string.substring(1,3) = " + string.substring(1,3)); // 문자열에서 특정 문자열을 인덱스 범위로 구하기
System.out.println("string.equals(\"ABCDE\") = " + string.equals("ABCDE")); // 문자열 비교
char[] charArr = string.toCharArray(); // 문자열에서 char배열로 바꾸기
System.out.println("charArr.toString() = " + charArr.toString());
System.out.println("string.toCharArray().toString() = " + string.toCharArray().toString());
}
>> string.charAt(3) = D
>> string.substring(1,3) = BC
>> string.equals("ABCDE") = true
>> charArr.toString() = [C@28d93b30
>> string.toCharArray().toString() = [C@1b6d3586
// 정렬
public static void main(String[] args) {
int[] arr = {3, 2, 5, 4, 1};
Arrays.sort(arr);
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
}
Arrays.toString(arr) = [1, 2, 3, 4, 5]
Reference
この問題について([Java]javaの定式5章を振り返る-並べ替え), 我々は、より多くの情報をここで見つけました
https://velog.io/@tonic523/Java-자바의-정석-5장-회고-배열
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
public static void main(String[] args) {
int[] arr; // 배열 선언
arr = new int[5]; // 5개의 int 값을 저장할 수 있는 공간 생성
}
public static void main(String[] args) {
int[] arr = new int[5];// 선언과 동시에 생성
}
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};// 선언과 동시에 생성
}
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
int[] arr2 = arr; // 가능할까?
arr[2] = 100;
System.out.println(Arrays.toString(arr2));
}
> [1, 2, 100, 4, 5]
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
System.out.println(arr.length);
>> 5
}
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
System.out.println(Arrays.toString(arr));
>> [1,2,3,4,5]
}
// toString, deepToString, equals, deepEquals
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int[] arr2 = {1,2,3,4,5};
int[][] arr2D = {{1,2,},{3,4}};
int[][] arr2D2 = {{1,2,},{3,4}};
System.out.println("Arrays.toString(arr) : " + Arrays.toString(arr));
System.out.println("Arrays.equals(arr,arr2) : " + Arrays.equals(arr,arr2));
System.out.println("arr.equals(arr2) : " + arr.equals(arr2));
System.out.println("Arrays.deepToString(arr2D) : " + Arrays.deepToString(arr2D));
System.out.println("Arrays.deepEquals(arr2D, arr2D2) : " + Arrays.deepEquals(arr2D, arr2D2));
}
>> Arrays.toString(arr) : [1, 2, 3, 4, 5]
>> Arrays.equals(arr,arr2) : true
>> arr.equals(arr2) : false
>> Arrays.deepToString(arr2D) : [[1, 2], [3, 4]]
>> Arrays.deepEquals(arr2D, arr2D2) : true
// 주소 복사 vs copyOf 사용
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int[] arr2 = arr;
int[] arr3 = Arrays.copyOf(arr, arr.length);
System.out.println("arr = " + arr); // 같은 메모리 주소
System.out.println("arr2 = " + arr2); // arr와 같은 메모리 주소
System.out.println("arr3 = " + arr3);
arr[3] = 100;
System.out.println("arr[3] = " + arr[3]);
System.out.println("arr2[3] = " + arr2[3]);
System.out.println("arr3[3] = " + arr3[3]);
}
> arr = [I@28d93b30
> arr2 = [I@28d93b30
> arr3 = [I@1b6d3586
> arr[3] = 100
> arr2[3] = 100
> arr3[3] = 4
public static void main(String[] args) {
//String 메소드
String string = "ABCDE";
System.out.println("string.charAt(3) = " + string.charAt(3)); // 문자열에서 특정 인덱스 문자 구하기
System.out.println("string.substring(1,3) = " + string.substring(1,3)); // 문자열에서 특정 문자열을 인덱스 범위로 구하기
System.out.println("string.equals(\"ABCDE\") = " + string.equals("ABCDE")); // 문자열 비교
char[] charArr = string.toCharArray(); // 문자열에서 char배열로 바꾸기
System.out.println("charArr.toString() = " + charArr.toString());
System.out.println("string.toCharArray().toString() = " + string.toCharArray().toString());
}
>> string.charAt(3) = D
>> string.substring(1,3) = BC
>> string.equals("ABCDE") = true
>> charArr.toString() = [C@28d93b30
>> string.toCharArray().toString() = [C@1b6d3586
// 정렬
public static void main(String[] args) {
int[] arr = {3, 2, 5, 4, 1};
Arrays.sort(arr);
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
}
Arrays.toString(arr) = [1, 2, 3, 4, 5]
Reference
この問題について([Java]javaの定式5章を振り返る-並べ替え), 我々は、より多くの情報をここで見つけました https://velog.io/@tonic523/Java-자바의-정석-5장-회고-배열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol