5.2 String 배열 (String Arrays)
배열의 타입이 String인 경우, 즉 여러 개의 문자열을 담을 수 있는 배열을 말합니다. 자바의 String은 자바 데이터 타입 중 가장 많이 사용되는 특별한 클래스입니다.
1. String 배열의 선언과 생성
기본형인 int 등 숫자형 배열과 마찬가지로 다룰 수 있지만, 내부에 저장되는 데이터 자체가 객체(문자열 리터럴)라는 점에서 본질적으로 차이가 있습니다.
String[] name = new String[3]; // 빈 문자열 배열 크기 3 할당
기본형 배열의 각 공간에는 데이터가 직접 들어가야 하나, 이와 달리 데이터의 초기값이 기본형들에는 명시적인 값이지만 참조형 변수인 String 배열은 참조할 대상 클래스가 비었으므로 초기값이 null입니다.
String 배열의 초기화
명시적인 문자열 데이터들을 제공하는 방법입니다.
String[] season = {"봄", "여름", "가을", "겨울"};
String[] name = new String[3];
name[0] = "Kim";
name[1] = "Lee";
name[2] = "Park";
2. String 객체의 특징
배열만이 아니라 모든 String 클래스에 관한 특징입니다. (배열과 깊은 연관이 있습니다.)
- 문자열은 불변성(Immutable)을 지닙니다. 즉, 내용이 변하지 않으며 새롭게 대입만 이루어집니다.
- 각 문자가 내부적으로
char[]배열로 이루어집니다.
사실 String 역시 문자(char) 배열이기 때문에, 문자열 내에서 특정 문자나 길이 등의 정보를 빼낼 수 있는 배열의 형태적 기능들을 갖추고 있습니다.
String 배열 관련 주요한 메서드
이들은 주로 String 자체에서 배열적인 용도로 꺼내어 쓸 때 활용됩니다:
charAt(int index): 문자열에서 해당 위치(index)에 있는 문자(char)를 반환합니다.length(): 문자열의 길이를 반환합니다 (배열의.length와 달리 메서드이므로()를 붙입니다).substring(int from, int to): 원하는 위치의 범위 내의 문자열(부분 문자열)을 얻습니다.equals(Object obj): 문자열의 내용을 서로 비교합니다.
3. 프로그램 실행 매개변수 (Command Line Arguments)
우리가 평소 자바에서 프로그램을 실행하고자 가장 먼저 작성했던 메인 메서드입니다:
public static void main(String[] args) { }
여기서 매개변수 String[] args의 정체가 바로 String 배열입니다. 커맨드 창에서 자바 프로그램을 실행할 때 프로그램명 뒤에 여러 문자열을 공백으로 구분하여 전달하면 해당 값들이 이 배열에 담긴 상태로 실행됩니다.
명령어 창에서: java MainTest abc 123 "Hello Java"
위와 같이 전달했을 경우, 배열에는 총 3개의 데이터가 들어가게 되는 편리한 기능입니다.