Java 문자열 조작 마스터: 필수 함수, 메서드, 실전 예제
문자열(String)이란?
Java에서 String은 불변 문자 시퀀스로, 텍스트 데이터를 표현하는 특화된 배열입니다. 예: ROSE 단어는 다음과 같이 시각화할 수 있습니다:

이 가이드에서 배울 내용:
- 문자열이란 무엇이고 왜 중요한가
- 언제 사용하는가
- 일반적인 문법 패턴
- 연결(Concatenation) 기법
- 핵심 Java String 메서드
왜 String을 사용하는가?
텍스트 처리는 소프트웨어 개발의 핵심입니다 — 메뉴, 다이얼로그, 로그, API 모두 텍스트에 의존합니다. Java String 클래스는 텍스트 데이터를 저장하고 조작하는 신뢰할 수 있고 타입 안전한 방법을 제공해 개발자가 사용자 친화적 인터페이스를 구축하고 복잡한 문자열 연산을 최소 오버헤드로 수행하게 합니다.
문자열 문법 예제
문자 배열로 문자열 생성 가능하지만 가장 흔한 선언은 문자열 리터럴:
// 문자 배열 사용
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample1 = new String(arrSample);
// 직접 문자열 리터럴
String strSample2 = "ROSE";
리터럴 형태는 자동으로 문자열을 문자열 상수 풀(String Constant Pool)에 배치해 메모리 절약과 성능 향상.
문자열 연결 (Concatenation)
연결은 두 개 이상의 문자열을 하나로 합칩니다. Java는 두 가지 편리한 방법 제공:
예제:
public class SampleString {
public static void main(String[] args) {
String str1 = "Rock";
String str2 = "Star";
// 방법 1: concat
String str3 = str1.concat(str2);
System.out.println(str3);
// 방법 2: + 연산자
String str4 = str1 + str2;
System.out.println(str4);
}
}
핵심 Java String 메서드
모든 Java 개발자가 마스터해야 할 필수 메서드들을 명확한 예제로 소개합니다.
length()
String strSample = "RockStar";
System.out.println("문자열 길이: " + strSample.length());
출력: 문자열 길이: 8
indexOf()
String strSample = "RockStar";
System.out.println("5번째 위치 문자: " + strSample.charAt(5));
System.out.println("'S'의 인덱스: " + strSample.indexOf('S'));
출력:
5번째 위치 문자: t
'S'의 인덱스: 4
charAt()
String strSample = "RockStar";
System.out.println("5번째 위치 문자: " + strSample.charAt(5));
출력: 5번째 위치 문자: t
compareTo() & compareToIgnoreCase()
String strSample = "RockStar";
System.out.println("'rockstar'와 비교: " + strSample.compareTo("rockstar"));
System.out.println("'ROCKSTAR'와 대소문자 무시 비교: " + strSample.compareToIgnoreCase("ROCKSTAR"));
출력:
'rockstar'와 비교: -32
'ROCKSTAR'와 대소문자 무시 비교: 0
contains()
String strSample = "RockStar";
System.out.println("'tar' 포함 여부: " + strSample.contains("tar"));
출력: 'tar' 포함 여부: true
endsWith()
String strSample = "RockStar";
System.out.println("'r'로 끝나는가: " + strSample.endsWith("r"));
출력: 'r'로 끝나는가: true
replace() / replaceAll() / replaceFirst()
String strSample = "RockStar";
System.out.println("'Rock'을 'Duke'로 치환: " + strSample.replace("Rock", "Duke"));
출력: 'Rock'을 'Duke'로 치환: DukeStar
toLowerCase() & toUpperCase()
String strSample = "RockStar";
System.out.println("소문자: " + strSample.toLowerCase());
System.out.println("대문자: " + strSample.toUpperCase());
출력:
소문자: rockstar
대문자: ROCKSTAR
중요 포인트
- String은 final이고 불변입니다. 생성 후 내용 변경 불가.
- Java의 문자열 상수 풀이 리터럴 문자열 저장, 중복 인스턴스 제거.
- String은
java.lang.String 소속, import 불필요.
- 참조 재할당(예:
h1 = "hello" + "world";)은 원본 문자열 삭제하지 않고 새 객체 가리키게 함.
- 여러 참조가 같은 문자열 리터럴 가리켜 풀 엔트리 공유 가능.
- 숫자 따옴표(예:
"123")로 문자열화, 숫자와 연결 시 명시적 숫자 덧셈 없으면 텍스트로 연결.
이 기초를 염두에 두면 더 깔끔하고 효율적인 Java 코드를 작성할 수 있습니다.