본문 바로가기

프로그래밍언어/JAVA

[JAVA] String 배열

반응형

1. String 배열의 선언과 생성

 

문자열을 담을 수 있는 배열을 생성하는 문장은 다음과 같다.

 

String[] arr = new String[5]; // 5개의 문자열을 담을 수 있는 배열 선언 및 생성

 

String 타입으로 생성된 배열은 초기값으로 참조형 변수의 기본값인 null을 가지게 된다. 그렇기 때문에 위의 문장이 실행되는 경우 null값을 가진 String 저장공간 5개와 이를 가리키는 참조변수 arr가 생성된다.

 

 

2. String 배열의 초기화

 

초기화 역시 int 배열과 동일한 방법으로 한다.

 

String[] arr = new String[3];
arr[0] = "val1";
arr[1] = "val2";
arr[2] = "val3";

String[] arr1 = new String[]{"val", "val", "val"};
String[] arr2 = {"val", "val", "val"};

 

위의 예제와 같이 문자열 배열도 기본형 배열들과 같이 각 요소들 또는 배열 선언과 동시에 초기화가 가능하다. 하지만 실제 배열에 저장되는 값에는 차이점이 있는데, 참조형의 경우 기본형과 같이 값이 바로 저장되는 것이 아니라 해당 값을 가지고 있는 메모리의 주소를 저장한다. 즉 참조형 배열의 경우 배열에 저장되는 것은 객체의 주소이다.

 

 

3. char 배열과 String 클래스

 

여러개의 문자들을 저장한다는 의미에서 char배열과 String은 같은 의미이다. 하지만 보통의 문자열을 char 배열을 이용하는 것이 아니라 String 클래스를 사용하는 이유는 String 클래스가 char 배열보다 많은 기능을 가지고 있기 때문에 문자열을 다루기 보다 편리하기 때문이다.

또한 char 배열은 그 값을 변경할 수 있는 반면에 String 객체는 값을 변경할 수 없다. 만약 값을 변경하게 되면 실제로 해당 주소의 값이 변경되는 것이 아니라 변경된 값을 가진 새로운 String 객체가 생성이 된다. 변경 가능한 문자열을 다루려면 StringBuffer 클래스를 사용하면 된다.

 

String 클래스의 기능들은 함수로 구현되어 있는데, 객체지향 언어에서 클래스의 함수는 메서드라는 용어로 사용한다. 

 

- String 클래스의 주요 메서드

 

메서드 설명
char charAt(int index) 문자열에서 해당 index의 문자를 반환한다.
int length() 문자열의 길이를 반환한다.
String substring(int from, int to) 문자열에서 해당 범위(from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음)
boolean equals(String str) 문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false가 된다.
char[] toCharArray() 문자열을 문자배열(char[])로 변환해서 반환한다.

 

- char 배열과 String 클래스의 변환

 

필요에 따라서 char 배열과 String 클래스 간의 변환이 필요한 경우가 있다. 그러한 경우에는 다음과 같은 방법으로 변환을 할 수 있다.

 

char[] chArr = {'A', 'B', 'C'};
String str = new String(chArr); // chArr의 값을 가진 String 객체 생성
char[] temp = str.toCharArray(); // str 객체의 값을 char 배열로 변환

 

 

 

4. 커맨드 라인을 통해 입력받기

 

커맨드 라인을 이용하면 프로그램을 실행할 때 사용자로부터 값을 입력받을 수 있다. 입력 방법은 클래스 이름 뒤에 공백문자로 구분하여 여러 개의 문자열을 프로그램에 전달 할 수 있다.

 

$ java MainTest val1 val2 val3
# 커맨드 라인을 통해 MainTest 프로그램에 "val1", "val2", "val3" 값을 넘겨준다.

 

위의 예제와 같이 프로그램 실행 시에 여러 문자열을 값으로 전달할 수 있는데, 이를 통해서 전달된 값은 main 메서드의 args, 매개변수에 전달된다. main 메서드 내에서 args[0], args[1]과 같은 방식으로 커맨드 라인으로부터 전달받은 문자열에 접근할 수 있다.

위의 예제에서 args[0] "val1", args[1] "val2" 가 된다.

 

만약 매개변수로 입력받은 값을 int로 변환하기 위해서는 Integer.parseInt()와 같은 방법으로 가능하다.

매개변수를 입력하지 않으면args는 길이가 0인 배열이 되는데 이는  JVM에서 null 이 아닌 길이가 0인 배열을 생성해주기 떄문이다.

반응형

'프로그래밍언어 > JAVA' 카테고리의 다른 글

[JAVA] 클래스와 객체  (0) 2021.08.30
[JAVA] 다차원 배열  (0) 2021.08.25
[JAVA] 배열 (Array)  (0) 2021.08.24
[JAVA] 반복문 - for, while, do-while  (0) 2021.08.22
[JAVA] 조건문 - if, switch  (0) 2021.08.21