자바에서 문자열을 다루는 방법은 무엇인가요?

자바에서 문자열(String)을 다루는 방법에 대해 알아보겠습니다.

자바에서 문자열은 불변(immutable) 객체이며, String 클래스 타입으로 표현됩니다.

문자열 처리에 있어 자주 사용되는 기본적인 기능과 팁을 다음과 같이 정리할 수 있습니다.

--- 1. 문자열 생성 ```java String s1 = "Hello"; // 리터럴 방식 (상수풀에 저장) String s2 = new String("Hello"); // new 연산자로 생성 (힙 메모리에 생성) ``` 일반적으로 문자열 리터럴을 많이 사용하며, 같은 내용의 문자열 리터럴은 JVM 내의 상수풀(String Pool)에서 공유됩니다.

--- 2. 문자열 기본 연산 - 길이 구하기 ```java String s = "hello"; int length = s.length(); // 5 ``` - 문자 접근 ```java char c = s.charAt(1); // 'e' ``` - 문자열 비교 ```java String s1 = "abc"; String s2 = "abc"; boolean b1 = s1.equals(s2); // true boolean b2 = s1.equalsIgnoreCase("ABC"); // true (대소문자 무시 비교) boolean b3 = s1 == s2; // true (리터럴 같은 객체를 가리키는 경우도 있음) ``` > 문자열 내용 비교 시에는 반드시 `equals()` 또는 `equalsIgnoreCase()` 를 사용해야 하며, `==`는 객체 참조 비교임에 유의해야 합니다.

- 부분 문자열 추출 ```java String s = "hello world"; String sub = s.substring(0, 5); // "hello" (0 이상 5 미만) ``` - 문자열 연결 ```java String s = "Hello" + " World"; // "Hello World" String s2 = s.concat("!"); // "Hello World!" ``` + `+` 연산자는 내부적으로 `StringBuilder`를 사용해 문자열을 연결하지만, 반복 연결 시 `StringBuilder`를 직접 사용하는 것이 성능에 유리합니다.

--- 3. 문자열 검색 및 치환 - 포함 여부 ```java boolean contains = s.contains("world"); // true ``` - 특정 문자나 문자열 위치 찾기 ```java int index = s.indexOf('o'); // 4 (처음 발생 위치) int lastIndex = s.lastIndexOf('o'); // 7 (마지막 발생 위치) ``` - 문자열 치환 ```java String replaced = s.replace("world", "Java"); // "hello Java" ``` - 대소문자 변경 ```java String upper = s.toUpperCase(); // "HELLO WORLD" String lower = s.toLowerCase(); // "hello world" ``` --- 4. 문자열 분리 (Split) ```java String fruits = "apple,banana,orange"; String[] array = fruits.split(","); // ["apple", "banana", "orange"] ``` --- 5. 문자열 형 변환 - 숫자 → 문자열 ```java int num = 100; String str1 = String.valueOf(num); // "100" String str2 = Integer.toString(num); // "100" ``` - 문자열 → 숫자 ```java String str = "123"; int n = Integer.parseInt(str); double d = Double.parseDouble("3.14"); ``` --- 6. StringBuilder / StringBuffer 사용 불변 문자열인 String 객체를 반복적으로 수정하거나 연결할 때 `StringBuilder` 또는 `StringBuffer`를 사용하면 성능 향상에 도움이 됩니다.

```java StringBuilder sb = new StringBuilder(); sb.append("Hello"); sb.append(" World"); String result = sb.toString(); ``` - `StringBuffer`는 쓰레드 안전(thread-safe)한 클래스이고, `StringBuilder`는 그렇지 않으나 단일 쓰레드 환경에서 더 빠릅니다.

--- 7. 기타 유용한 메서드들 - `trim()` : 문자열 앞뒤 공백 제거 - `isEmpty()` : 길이가 0인지 확인 (빈 문자열) - `startsWith()`, `endsWith()` : 특정 문자열로 시작하거나 끝나는지 확인 - `format()` : 서식(format)에 맞춰 문자열 생성 ```java String name = "Alice"; int age = 30; String info = String.format("Name: %s, Age: %d", name, age); ``` --- 정리 - 자바에서 문자열은 String 클래스의 불변 객체 - 문자열 비교에는 `equals()`, `equalsIgnoreCase()` 사용 - 문자열 연결 시 반복 작업에는 `StringBuilder` 권장 - 다양한 문자열 처리 메서드 제공 (`substring`, `split`, `replace` 등) - 숫자와 문자열 간 변환을 위한 `parseXxx()`, `valueOf()` 제공 위 내용을 바탕으로 자바에서 문자열을 효과적으로 다룰 수 있습니다.

필요에 따라 다양한 문자열 메서드를 활용해 보세요!


관련 게시글

자바에서 병렬 처리를 구현하는 방법은 무엇인가요?

자바에서 병렬 처리는 여러 작업을 동시에 실행하여 프로그램의 성능과 응답성을 향상시키는 기법입니다....

문제 해결 및 면접 질문

문제 해결 및 면접 질문에 관한 글 --- 1. 문제 해결의 중요성 문제 해결 능력은 개인과...

자바에서 중복된 요소를 제거하는 방법은 무엇인가요?

자바(Java)에서 중복된 요소를 제거하는 방법에는 여러 가지가 있습니다. 주로 컬렉션프레임워크를 활용하...

자바 Collections에서 정렬하는 방법은 무엇인가요?

자바 Collections에서 정렬하는 방법에 대해 설명드리겠습니다. 자바에서는 컬렉션(Collection) 자료구조의...

자바의 메모리 누수 문제를 해결하는 방법은 무엇인가요?

자바의 메모리 누수 문제를 해결하는 방법 --- 1. 메모리 누수란? 자바는 가비지 컬렉션(GC)...

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요.

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요. --- 1. 팩토리 패턴이란? 팩토리 패턴...