2. 배열의 생성과 선언
- 배열의 선언 - 배열을 다루기 위한 참조변수의 선언
타입[] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언)
변수이름 = new 타입[길이]; // 배열을 생성(실제 저장공간을 생성)
int[] score; // int타입의 배열을 다루기 위한 참조변수 score선언
score = new int[5]; // int타입의 값 5개를 저장할 수 있는 배열 생성4~5. 배열의 길이, 배열의 초기화
4. 배열의 길이
배열이름.length- 배열의 길이(int형 상수)
int[] arr = new int[5]; // 길이가 5인 int배열
int tmp = arr.length; // arr.length의 값은 5-
“배열은 한번 생성하면 실행 동안 그 길이를 바꿀 수 없다.”
-
왜? - 할당된 연속적인 메모리 공간을 연장할 수 있다는 보장 X
-
부족할 경우 - 더 큰 연속된 메모리 공간을 새로 찾아서 기존 데이터를 복사 후 추가
5. 배열의 초기화
- 배열의 각 요소에 처음으로 값을 저장하는 것
int[] score = new int[5]; // 길이가 5인 int형 배열을 생성
score[0] = 50; // 각 요소에 직접 값을 저장
score[1] = 60;
score[2] = 70;
score[3] = 80;
score[4] = 90;
// 더 간단한 방법
int[] score = new int[]{50, 60, 70, 80, 90};
int[] score = {50, 60, 70, 80, 90}; // new int[]를 생략할 수 있음
int[] score;
score = {50, 60, 70, 80, 90}; // 에러. new int[]를 생략할 수 없음
score = new int[]{50, 60, 70, 80, 90}; // OK.6~7. 배열의 출력
int[] iArr = {100, 95, 80, 70, 60}
// 배열을 가리키는 참조변수 iArr의 값을 출력한다.
System.out.println(iArr); // [I@14318bb와 같은 형식의 문자열이 출력됨
// 예외적으로 character 배열의 경우
char[] chArr = {'a', 'b', 'c', 'd'};
System.out.println(chArr); // abcd가 출력됨
// 배열 iArr의 모든 요소를 출력
System.out.println(Arrays.toString(iArr)); // [100, 95, 80, 70, 60]가 출력됨14~15. String 클래스
14. String 클래스
-
- String 클래스는
char[]와 메서드(기능)를 결합한 것
- String 클래스는
-
- String 클래스는 내용을 변경할 수 없다. (read only)
String a = "a";
String b = "b";
a = a + b // a 변수에 "a"가 "ab"로 바뀌는 것이 아니라 새로운 문자열 "ab"를 새로 참조15. String 클래스의 주요 메서드
| 메서드 | 설명 |
|---|---|
char charAt(int index) | 문자열에서 해당 위치(index)에 있는 문자를 반환 |
int length() | 문자열의 길이를 반환 |
String substring(int from, int to) | 문자열에서 해당 범위(from~to)의 문자열을 반환 |
boolean equals(Object obj) | 문자열의 내용이 같은지 확인 |
char[] toCharArray() | 문자열을 문자배열(char[])로 변환해서 반혼 |
String str = "ABCDE";
char ch = str.charAt(3); // 문자열 str의 4번째 문자 'D'를 ch에 저장
String str = "012345";
String tmp = str.substring(1, 4); // str에서 index범위 1~4의 문자들을 반환
System.out.println(tmp); // "123" 출력18~20. 2차원 배열
18. 2차원 배열
- 테이블 형태의 데이터를 저장하기 위한 배열
int[][] score = new int[4][3]; // 4행 3열의 2차원 배열을 생성20. 2차원 배열의 초기화
int[][] score = new int[][]{ {1, 2, 3}, {4, 5, 6} };
int[][] score = { {1, 2, 3}, {4, 5, 6} }; // new int[][] 생략
// 직관적으로 초기화
int[][] score = new int[][]{
{1, 2, 3},
{4, 5, 6}
};24. Arrays로 배열 다루기
배열의 비교와 출력 - equals(), 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]]
String[][] str2D = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
System.out.println(Arrays.equals(str2D, str2D2)); // false (1차원배열 비교 가능)
System.out.println(Arrays.deepEquals(str2D, str2D2)); // true (다차원배열 비교 가능)배열의 복사 - copyOf(), copyOfRange()
int[] arr = {0, 1, 2, 3, 4};
int[][] arr2 = Arrays.copyOf(arr, arr.length); // arr2 = [0,1,2,3,4]
int[][] arr3 = Arrays.copyOf(arr, 3); // arr3 = [0,1,2]
int[][] arr4 = Arrays.copyOf(arr, 7); // arr4 = [0,1,2,3,4,0,0]
int[][] arr5 = Arrays.copyOfRange(arr, 2, 4); // arr5 = [2,3]
int[][] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr6 = [0,1,2,3,4,0,0]배열의 정렬 - sort()
int[] arr = {3, 2, 0, 1, 4};
Arrays.sort(arr); // 배열 arr를 정렬
System.out.println(Arrays.toString(arr)); // [0,1,2,3,4]