[자바의 정석 기초편] 배열

JEREGIM·2023년 1월 16일
0

📌배열의 선언과 초기화

int[] score = new int[5];
  • score는 참조변수
  • 배열은 한번 생성하면 그 길이를 바꿀 수 없다.
int[] iArr = {50, 60, 70, 80, 90}; // 배열 초기화
System.out.println(Arrays.toString(iArr)); // 배열의 모든 요소를 출력
  • Arrays.toString() : 배열의 모든 요소를 출력

String 배열

String[] str = new String[3];
  • 참조형의 기본값은 null

📌로또번호 구하는 예제

class Ex5_5 { 
	public static void main(String[] args) { 
		int[] ball = new int[45];  // 45개의 정수값을 저장하기 위한 배열 생성.      

		// 배열의 각 요소에 1~45의 값을 저장한다. 
		for(int i=0; i < ball.length; i++)       
			ball[i] = i+1;    // ball[0]에 1이 저장된다.

		int tmp = 0;   // 두 값을 바꾸는데 사용할 임시변수 
		int j = 0;     // 임의의 값을 얻어서 저장할 변수 

		// 배열의 i번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞는다. 
		// 0번째 부터 5번째 요소까지 모두 6개만 바꾼다.
		for(int i=0; i < 6; i++) {       
			j = (int)(Math.random() * 45); // 0~44범위의 임의의 값을 얻는다. 
			tmp     = ball[i]; 
			ball[i] = ball[j]; 
			ball[j] = tmp; 
		} 

		// 배열 ball의 앞에서 부터 6개의 요소를 출력한다.
		for(int i=0; i < 6; i++) 
			System.out.printf("ball[%d]=%d%n", i, ball[i]); 
	} 
}

📌String 클래스

1. String 클래스는 char[]와 메서드(기능)를 결합한 것

2. String 클래스는 내용을 변경할 수 없다.(read only)

String 클래스의 주요 메서드

1. char charAt(int index) : 문자열에서 해당 위치(index)에 있는 문자를 반환한다.

String str = "ABCDE";
char ch = str.charAt(3); // ch = 'D';

2. int length() : 문자열의 길이를 반환한다.

3. String substring(int from, int to) : 문자열에서 해당 범위(from~to)의 문자열을 반환한다.(to는 포함x)

String str = "012345";
String tmp = str.substring(1,4); // tmp = "123";

4. boolean equals(Object obj) : 문자열의 내용이 같은이 확인한다. 같으면 true, 다르면 false

5. char[] toCharArray() : 문자열을 문자배열(char[])로 변환해서 반환한다.


📌2차원 배열

int[][] score = new int[4][3]; // 4행3열의 2차원 배열
score[0][0]score[0][1]score[0][2]
score[1][0]score[1][1]score[1][2]
score[2][0]score[2][1]score[2][2]
score[3][0]score[3][1]score[3][2]

2차원 배열의 초기화

int[][] score = {
					{100, 100, 100}, // 배열 이름이 score[0]인 1차원 배열
                    {20, 20, 20}, // 배열 이름이 score[1]인 1차원 배열
                    {30, 30, 30}, // 배열 이름이 score[2]인 1차원 배열
                    {40, 40, 40}, // 배열 이름이 score[3]인 1차원 배열
                };


📌Arrays 클래스

배열의 출력 - toString()

int[] arr = {0, 1, 2, 3, 4};
int[][] arr2D = {
					{11, 12},
                    {21, 22}
                };
System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4]
System.out.println(Arrays.deepToString(arr2D)); // [[11, 12], [21, 22]]
  • 2차원, 다차원 배열일때는 deepToString() 사용

배열의 비교 - equals()

String[][] str2D = new String[][]{
									{"aa","bb"},
                                    {"cc","dd"}
                                 };
String[][] str2D2 = new String[][]{
									{"aa","bb"},
                                    {"cc","dd"}
                                  };
System.out.println(Arrays.deepEquals(str2D, str2D2)); // true
  • 2차원, 다차원 배열 비교할 때는 deepEquals() 사용

배열의 복사 - copyOf(), copyOfRange()

int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length);
int[] arr3 = Arrays.copyOf(arr, 3);
int[] arr4 = Arrays.copyOf(arr, 7);
int[] arr5 = Arrays.copyOfRange(arr, 2, 4);
int[] arr6 = Arrays.copyOfRange(arr, 0, 7);

arr2 = [0, 1, 2, 3, 4];
arr3 = [0, 1, 2];
arr4 = [0, 1, 2, 3, 4, 0, 0];
arr5 = [2, 3]; <- 4는 포함x
arr6 = [0, 1, 2, 3, 4, 0, 0];

배열의 정렬 - sort()

int[] arr = {3, 2, 0, 1, 4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4];
  • sort() : 배열이 오름차순으로 정렬된다.

0개의 댓글