방법 | 설명 | 예시 코드 | java 버전 |
+ 연산자 | 문자열을 간단히 연결하는 가장 기본적인 방법 | String result = "Hello, " + "world!"; | 모든 버전 |
String.concat() | String 클래스의 concat 메서드를 사용하여 문자열을 연결 | String result = "Hello, ".concat("world!"); | 모든 버전 |
StringBuilder | 문자열을 효율적으로 더할 수 있는 변경 가능한 객체. 반복문에서 유용함 | StringBuilder sb = new StringBuilder(); sb.append("Hello, "); sb.append("world!"); | 모든 버전 |
StringBuffer | StringBuilder와 유사하지만 스레드 안전(thread-safe) | StringBuffer sb = new StringBuffer(); sb.append("Hello, "); sb.append("world!"); | 모든 버전 |
String.join() | 여러 문자열을 구분자와 함께 결합. 가변 길이 인자 지원 | String result = String.join(" ", "Hello,", "world!"); | Java 8+ |
String.format() | 포맷팅을 사용하여 문자열을 결합 | String result = String.format("Hello, %s!", "world"); | Java 5+ |
Collectors.joining() | Stream API와 함께 문자열을 구분자와 결합 (리스트 등에서 사용) | List<String> words = Arrays.asList("Hello,", "world!"); String result = words.stream().collect(Collectors.joining(" ")); | Java 8+ |
Arrays.toString() | 배열의 문자열 표현을 반환 | String result = Arrays.toString(new String[]{"Hello,", "world!"}); // "[Hello,, world!]" | Java 5+ |
StringJoiner | 여러 문자열을 특정 구분자와 함께 결합 (구분자, 접두사, 접미사 가능) | StringJoiner joiner = new StringJoiner(", "); joiner.add("Hello"); joiner.add("world!"); | Java 8+ |
- 권장 사항:
- 간단한 문자열 연결: + 연산자나 concat() 사용.
- 여러 문자열 연결 (반복문 포함): StringBuilder 또는 StringBuffer 사용.
- Stream 또는 리스트에서 문자열 결합: Collectors.joining().
- 포맷 필요: String.format() 사용.
방법 | 장점 | 단점 | 사용 사례 및 권장사항 |
+ 연산자 | - 코드가 간결하고 직관적. - 간단한 문자열 결합 시 가독성 높음 |
- 문자열이 변경될 때마다 새로운 객체 생성, 성능 저하 발생 가능. - 반복문에서 사용 시 비효율적 |
- 간단한 문자열 연결 작업에 적합 |
String.concat() | - 코드 간결성 및 명시적인 의미 전달. - null이 아닌 경우에만 동작 |
- 문자열이 변경될 때마다 새 객체 생성. - null 처리 필요 |
- 두 문자열을 간단하게 연결할 때 적합 |
StringBuilder | - 가변(mutable) 객체로 성능이 좋음. - 반복문에서 효율적. - 여러 문자열 연결에 최적화됨 |
- 멀티스레드 환경에서는 스레드 안전하지 않음. | - 반복문에서 문자열 결합이 많을 때 적합 |
StringBuffer | - StringBuilder와 동일한 성능. - 스레드 안전(thread-safe) |
- 스레드 안전성을 보장하므로 StringBuilder보다 약간 느림 | - 멀티스레드 환경에서 문자열 결합 시 적합 |
String.join() | - 여러 문자열을 구분자와 함께 결합할 때 코드가 간결. - 명시적이며 사용법이 직관적 |
- 배열이나 컬렉션이 없으면 추가로 인자가 필요함 | - 다수의 문자열을 특정 구분자로 연결할 때 |
String.format() | - 가독성이 높고 포맷팅 지원. - 변수 삽입이 명시적이고 직관적 |
- 성능이 다소 떨어짐. - 가벼운 문자열 결합에는 비효율적 |
- 포맷팅이 필요한 경우 적합 |
Collectors.joining() | - 리스트나 배열을 구분자로 결합할 때 유용. - 스트림 API와 함께 사용 시 간결하고 유연함 |
- Java 8 이상에서만 사용 가능. - Stream API에 대한 이해 필요 |
- Stream API를 사용할 때 적합 |
Arrays.toString() | - 배열의 모든 요소를 쉽게 연결할 수 있음 | - 구분자가 고정되어 있으며 사용자 지정 불가. - 다차원 배열은 deepToString() 필요 |
- 배열의 내용을 문자열로 출력할 때 적합 |
StringJoiner | - 다수의 문자열을 특정 구분자, 접두사, 접미사와 함께 결합 가능. - 유연한 문자열 생성 가능 |
- 초기화 필요. - 컬렉션을 직접 처리할 수 없음. - StringBuilder보다 다소 복잡할 수 있음 |
- 접두사/접미사 있는 구분자 연결 적합 |
요약
- 간단한 문자열 결합: + 연산자나 concat() 사용.
- 반복문 또는 다수의 문자열 결합: StringBuilder가 성능 최적화에 유리.
- 멀티스레드 환경: StringBuffer 사용.
- 포맷 지정 필요: String.format() 사용.
- Stream API 사용 시: Collectors.joining() 활용.
- 배열 요소 출력: Arrays.toString() 사용.
'JAVA' 카테고리의 다른 글
List.sort() 메서드 사용방법 정리 (0) | 2024.12.11 |
---|---|
자바Java 파일 입출력 관련 라이브러리/클래스 정리표 + 간단 설명 (0) | 2024.11.06 |
StringBuilder, StringBuffer 메서드 정리, 차이점? (0) | 2024.10.25 |
Map 메서드 사용법 정리 (0) | 2024.10.25 |
List 메서드 사용법 정리 (1) | 2024.10.25 |