Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- React
- OpenSearch
- 클린 아키텍처
- 가용영역
- object-creation
- 클라우드아키텍처
- 글쓰기세미나
- axios
- 코딩테스트
- builder-pattern
- design-pattern
- 프로그래머스
- Level2
- DevOps
- SpringBoot
- 글또10기
- 레벨1
- HashMap
- 헥사고날 아키텍처
- ReverseNested
- UserLand
- constructor
- static-factory-method
- QueryDSL
- 3계층 아키텍처
- 코엑스그랜드볼룸
- 글또
- 다짐글
- 포트앤어댑터 아키텍처
- 회고
Archives
- Today
- Total
oguri's garage
Java 문자열 조합, String.format()이 가독성에 좋은 이유 본문
왜 String.format()을 사용하는가
사용자 입력이나 변수를 특정 패턴의 문자열로 만들어야하는 상황이 있었다.+ 연산자로도 할 수 있지만, 코드 리뷰와 협업 환경에서는 String.format()이 의도가 명확하게 보인다.
// + 연산자 방식
String result = parts[0] + " (" + parts[1] + ")";
// String.format() 방식
String result = String.format("%s (%s)", parts[0], parts[1]);
변수와 포맷이 한 곳에 있어 어떤 값이 어디에 들어가는지 한눈에 파악된다. 값이 많아질수록 이 차이는 더욱 두드러진다.
기본 사용법
String name = "홍길동";
int age = 30;
String message = String.format("%s (%d)", name, age);
System.out.println(message); // 홍길동 (30)
주요 포맷 지정자:
%s: 문자열%d: 정수%f: 실수%c: 문자
실무에서 자주 쓰는 포맷 옵션
천 단위 구분
int price = 1234567;
String formatted = String.format("%,d원", price);
// 1,234,567원
자리수 맞춤
String aligned = String.format("%10s", "값"); // 10자리 확보
String number = String.format("%05d", 42); // 00042
대소문자 변환
String upper = String.format("%S", "apple"); // APPLE
소수점 제어
double pi = 3.14159265;
String rounded = String.format("%.2f", pi); // 3.14
패턴 변경에 유연하다
포맷 문자열만 수정하면 되므로 유지보수가 쉽다.
// 패턴 변경 전
String.format("%s (%s)", name, age);
// 패턴 변경 후 - 변수 순서는 그대로
String.format("%s - %s세", name, age);
StringBuilder와의 선택 기준
반복문 안에서 문자열을 계속 붙이는 경우에는 StringBuilder가 효율적이다.
// 대량 데이터 조합 - StringBuilder 사용
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i).append(",");
}
// 단순 패턴 조합 - String.format() 사용
String log = String.format("[%s] %s: %s", timestamp, level, message);
일반적인 파라미터 조합, 메시지, 로그 출력에는 String.format()이 가독성과 유지보수 면에서 우위에 있다.
주의사항
- 너무 복잡한 패턴은 오히려 가독성을 해친다
- 성능이 중요한 반복 작업에는
StringBuilder고려 - 포맷 지정자와 인자 타입이 맞지 않으면 런타임 에러 발생
정리
String.format()은 패턴 기반 문자열 생성에 최적화되어 있다. 코드의 의도가 명확하고, 협업과 유지보수에 유리하다.
대량 데이터 조합이 필요할 때만 StringBuilder로 전환하고, 그 외에는 String.format()을 기본으로 사용하는 것을 권장한다.
참고 문서
'개발하다 > Java' 카테고리의 다른 글
| Inner Class에 Static을 붙여야 하는 이유 (메모리 관점) (1) | 2025.10.29 |
|---|---|
| (Java) Stream API에서 Checked Exception 처리하기 (0) | 2025.10.07 |
| (Java) Record - Lombok Builder vs Record 비교 (0) | 2025.10.05 |
| `null` 대신 `Optional.empty`를 return 해야 하는 이유 (0) | 2025.09.30 |
| Java 객체 생성 패턴 비교 및 선택 가이드 (0) | 2025.09.28 |