자바의 정석_기초편 CHAPTER 5 中 12 ~ 24 (230809)
5-12. String배열의 선언과 생성.
String 인 경우에도 int 배열의 선언과 생성 방법은 다르지 않다.
String[] name = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성한다.
3개의 String 타입의 참조변수를 저장하기 위한 공간이 마련되고 참조형 변수의 기본값은 null 이므로 각 요소의 값은 null로 초기화 된다. 아래의 표는 변수의 타입에 따른 기본값이다.
자료형 | 기본값 |
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 | null |
5-13. String배열의 초기화
int 배열과 동일한 방법으로 한다.
String[] name = new String[3]; // 길이가 3인 String배열을 생성.
name[0] = "Kim";
name[1] = "Park";
name[2] = "Yi";
또는 괄호 {}를 사용해서 다음처럼 초기화 가능하다.
String[] name = new String[] { "Kim", "Park", "Yi" };
String[] name = { "Kim", "Park", "Yi" }; // new String[] 생략가능.
5-14. String 클래스.
지금까지 여러 문자, 즉 문자열을 저장할 때 String 타입의 변수를 사용했다. 사실 문자열이라는 용어는 '문자를 연이어 늘어놓은 것' 을 의미하므로 문자배열인 char배열과 같은 뜻이다.
그런데 자바에선 char 배열이 아닌 String 클래스를 이용해서 문자열을 처리하는 이뉴는 String 클래스가 char 배열에 여러 가지 기능을 추가하여 확장한 것이기 때문이다.
그래서 char 배열을 사용하는 것보다 String클래스를 사용하는 것이 문자열을 다루기 더 편리하다.
String 클래스는 char 배열에 기능(메소드)을 추가한 것이다.
5-15. String 클래스의 주요 메소드
메소드 | 설명 |
char charAt(int index) | 문자열에서 해당 위치 (인덱스) 에 있는 문자를 반환한다. |
int length( ) | 문자열의 길이를 반환한다 |
String substring(int from, int to) | 문자열에서 해당 범위 (from ~ to) 의 문자열을 반환한다.(to는포함X) |
boolean equals(Object obj) | 문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false |
char[ ] toCharArray( ) | 문자열을 문자배열(char[ ])로 변환해서 반환한다. |
5-18. 2차원 배열의 선언
2차원 배열 선언하는 방법은 1차원 배열과 같다. 다만, 대괄호[ ] 가 하나 더 들어갈 뿐.
선언 방법 | 선언 예 |
타입[ ][ ] 변수이름; | int[ ][ ] score; |
타입 변수이름[ ][ ]; | int score[ ][ ]; |
타입[ ] 변수이름[ ]; | int[ ] score[ ]; |
- 3차원 이상의 고차원 배열의 선언은 대괄호[ ]의 개수를 차원의 수만큼 추가하면됨.
예시로 4행 3열의 데이터를 담기 위한 배열을 생성하려면 이렇게 한다.
int[][] score = new int[4][3];
5-19. 2차원 배열의 인덱스
2차원 배열은 행(row) 과 열(column) 로 구성되어 있기에 index 도 행과 열에 각각 하나씩 존재.
'행index' 의 범위는 '0 ~ 행의 길이 -1' 이고, '열index'의 범위는 '0 ~ 열의 길이 -1' 이다.
그리고 2차원 배열의 각 요소에 접근하는 방법은 '배열이름[행index][열index]'이다.
5-20. 2차원 배열의 초기화.
괄호 { } 를 사용해서 생성과 초기화를 동시에 가능.
다만 1차원 배열보다 괄호 { }를 한번 더 써서 행별로 구분해야한다.
int[][] arr = new int[][]{ {1, 2, 3}, {4, 5, 6} };
int[][] arr = new { {1, 2, 3}, {4, 5, 6} }; // new int[][] 가 생략됨.
행별로 줄바꿈 해주는 것이 보기도 좋고 이해하기 쉬울 것이다.
int[][] arr = {
{1, 2, 3},
{4, 5, 6}
};
예를 들어 표처럼 테이블 형태의 데이터를 배열에 저장하려면
국어 | 영어 | 수학 | |
1 | 100 | 100 | 100 |
2 | 20 | 20 | 20 |
3 | 30 | 30 | 30 |
4 | 40 | 40 | 40 |
int[][] score = {
{100, 100, 100};
{20, 20, 20};
{30, 30, 30};
{40, 40, 40};
};
이렇게 하면 된다.
5-24. Arrays로 배열 다루기.
Arrays클래스는 배열을 다루는데 유용한 메소드를 제공한다. 자세한건 11장에서 알아본다.
배열의 비교와 출력 - equals( ), toString( )
toString( )배열의 모든 요소를 문자열로 편하게 출력할 수 있다.
toString( )은 일차원 배열에만 사용, 다차원 배열에선 deepToString( )을 사용해야 한다.
deepToString( )은 배열의 모든 요소를 재귀적으로 접근해서 문자열을 구성하므로 2차원뿐만 아니라 3차원 이상의 배열에도 동작한다.
equals( )는 두 배열에 저장된 모든 요소를 비교해서 같으면 true, 다르면 false를 반환한다.
equals( )도 일차원 배열에만 사용 가능하므로, 다차원 배열의 비교에는 deepEquals( )를 사용해야 한다.
배열의 복사 - copyOf( ), copyOfRange( )
copyOf( )는 배열 전체, copyOfRange( ) 는 배열의 일부를 복사 후 새로운 배열을 만들어 반환.
늘 그렇듯 copyOfRange( ) 에 지정된 범위의 끝은 포함되지 않는다.
배열의 정렬 - sort( ) // 11장에서 자세히 다룸.
230809 학습.
'진행중인 학습 > 자바의 정석_학습' 카테고리의 다른 글
자바의 정석_기초편 CHAPTER 6 中 9 ~ 12 (230814) (0) | 2023.08.14 |
---|---|
자바의 정석_기초편 CHAPTER 6 中 1 ~ 8 (230811) (0) | 2023.08.11 |
자바의 정석_기초편 CHAPTER 5 中 1 ~ 6 (230807) (0) | 2023.08.07 |
자바의 정석_기초편 CHAPTER 4 (230804) (0) | 2023.08.04 |
자바의 정석_기초편 CHAPTER 3 中 [15 ~ 19] (230802) (0) | 2023.08.02 |