[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]