이 글에서는 주어진 문자열(String)에서 특정 위치의 문자(char)를 가져오는 방법을 알아봅니다. 자바에서 char는 알파벳, 숫자, 특수 문자 등 단일 문자를 저장하는 데이터 타입이며, String은 하나 이상의 문자로 구성되어 큰따옴표(" ")로 감싸 표현하는 데이터 타입입니다.
문자열에서 원하는 위치의 문자를 꺼낼 때는 charAt() 메서드를 사용합니다. 아래 예시를 통해 자세히 살펴보겠습니다.
입력 · 출력 예시
입력 문자열: Java Programming 인덱스: 11
위 입력에 대한 기대 결과는 다음과 같습니다.
결과: m
※ 자바에서 문자열 인덱스는 0부터 시작합니다. 따라서 인덱스 11은 열한 번째 문자가 아니라 열두 번째 문자를 가리킵니다.
알고리즘
- 시작 — 프로그램을 시작합니다.
- 문자열 변수
input_string과 char 변수resultant_character를 선언합니다. - 각 변수에 값을 정의(초기화)합니다.
string.charAt()메서드를 호출해 지정된 위치의 문자를 가져와resultant_character에 저장합니다.- 결과를 화면에 출력합니다.
- 종료
예제 1 — main 메서드에서 모든 로직 처리
아래 예제는 모든 연산을 main 메서드 안에서 한 번에 처리하는 가장 기본적인 방식입니다.
public class CharacterAndString {
public static void main(String[] args) {
String string = "Java Programming";
System.out.println("정의된 문자열: " + string);
int index = 11;
char resultantCharacter = string.charAt(index);
System.out.println("\n문자열 \"" + string + "\"에서 인덱스 " + index + " 위치의 문자: " + resultantCharacter);
}
}
실행 결과
정의된 문자열: Java Programming 문자열 "Java Programming"에서 인덱스 11 위치의 문자: m
예제 2 — 객체 지향 방식으로 메서드 분리
아래 예제는 문자 추출 로직을 별도의 메서드로 캡슐화하여 객체 지향 프로그래밍(OOP) 스타일로 작성한 것입니다. 재사용성과 유지보수성이 더 뛰어난 구조입니다.
public class CharacterAndString {
public static char getCharacter(String string, int index) {
return string.charAt(index);
}
public static void main(String[] args) {
String string = "Java Programming";
System.out.println("정의된 문자열: " + string);
int index = 11;
char resultantCharacter = getCharacter(string, index);
System.out.println("\n문자열 \"" + string + "\"에서 인덱스 " + index + " 위치의 문자: " + resultantCharacter);
}
}
실행 결과
정의된 문자열: Java Programming 문자열 "Java Programming"에서 인덱스 11 위치의 문자: m
참고: 유효하지 않은 인덱스 처리
charAt()에 문자열 길이 이상의 값이나 음수를 전달하면 StringIndexOutOfBoundsException이 발생합니다. 안전한 코드를 위해 아래와 같이 인덱스 범위를 먼저 검사하는 것이 좋습니다.
if (index >= 0 && index < string.length()) {
char ch = string.charAt(index);
} else {
System.out.println("유효하지 않은 인덱스입니다.");
}