# Java 고급 출력 포맷 (이스케이프 시퀀스, printf, format) --- ## 1. 이스케이프 시퀀스란? > \*\*이스케이프 시퀀스(Escape Sequence)\*\*는 문자열 내에서 특수한 동작(줄바꿈, 탭, 따옴표 등)을 표현하기 위한 문자 조합이다. > Java에서는 `\` 백슬래시로 시작한다. --- ### 1.1 주요 이스케이프 시퀀스
이스케이프 의미 예시 출력
`\n` 줄바꿈 줄을 바꿈
`\t` 띄어쓰기(보통 4~8칸)
`\"` 큰따옴표 출력 `"그는 말했다: \"안녕\""`
`\'` 작은따옴표 출력 `'I\'m fine'`
`\\` 백슬래시 출력 `"C:\\Users\\Dain"`
`\r` 캐리지 리턴 커서를 맨 앞으로 이동 (거의 안 씀)
`\b` 백스페이스 글자 하나 삭제 (거의 안 씀)
`\f` 폼 피드 페이지 넘김 (거의 안 씀)
--- ### 1.2 사용 예시 ```java System.out.println("이름\t나이"); System.out.println("영희\t25"); System.out.println("그는 말했다: \"안녕하세요\""); System.out.println("C:\\Program Files\\Java"); ``` 출력 결과: ``` 이름 나이 영희 25 그는 말했다: "안녕하세요" C:\Program Files\Java ``` --- ## 2. 문자열 포맷 서식 문자 Java에서 문자열을 정해진 형식으로 출력하고 싶을 때 `System.out.printf()` 또는 `String.format()`을 사용한다. --- ### 2.1 기본 형식 ```java System.out.printf("형식", 값1, 값2...); String result = String.format("형식", 값1, 값2...); ``` --- ### 2.2 주요 서식 문자
서식 문자 설명 예시 출력
`%s` 문자열 `"이름: %s"` → 이름 출력
`%d` 정수 (10진수) `"나이: %d"`
`%f` 실수 (소수점 가능) `"점수: %.2f"`
`%c` 문자 `"성별: %c"`
`%n` 줄바꿈 (OS별 호환) `"다음 줄%n"`
`%%` 퍼센트(%) 출력 `"100%% 완료"`
--- ### 2.3 자리수/정렬 설정
형식 설명
`%5d` 전체 5자리, 오른쪽 정렬
`%-5d` 전체 5자리, 왼쪽 정렬
`%05d` 앞자리를 0으로 채움 (총 5자리)
`%.2f` 소수점 둘째자리까지 출력
`%6.2f` 전체 6칸 중 소수점 2자리 포함
--- ### 2.4 사용 예시 ```java String name = "영희"; int age = 25; double score = 93.756; System.out.printf("이름: %s, 나이: %d%n", name, age); System.out.printf("점수: %.2f%n", score); System.out.printf("진행률: %d%%%n", 100); ``` 출력 결과: ``` 이름: 영희, 나이: 25 점수: 93.76 진행률: 100% ``` --- ## 3. 요약 비교표
항목 예시 설명
이스케이프 문자 `\n`, `\t`, `\\` 문자열 내부 제어
서식 문자 (printf) `%d`, `%.2f`, `%s` 형식을 지정하여 출력
--- ## 4. 콘솔 색상 출력 (ANSI 컬러) Java 자체는 콘솔 색상 기능을 제공하지 않지만, ****터미널에서 ANSI 코드****를 사용하면 출력 색을 변경할 수 있다. ```java public class ColorExample { public static final String RED = "\u001B[31m"; public static final String RESET = "\u001B[0m"; public static void main(String[] args) { System.out.println(RED + "이 문장은 빨간색입니다." + RESET); } } ```
색상 ANSI 코드
빨강 `\u001B[31m`
초록 `\u001B[32m`
노랑 `\u001B[33m`
파랑 `\u001B[34m`
리셋 `\u001B[0m`
--- ## 5. 날짜 및 시간 포맷 출력 Java에서는 `java.time.LocalDateTime``DateTimeFormatter`를 사용해 날짜/시간을 원하는 형식으로 출력할 수 있다. --- ### 5.1 DateTimeFormatter 기본 사용 ```java import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; LocalDateTime now = LocalDateTime.now(); DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); System.out.println("현재 시간: " + now.format(fmt)); ``` --- ### 5.2 주요 포맷 패턴
패턴 의미 예시
`yyyy` 연도 `2025`
`MM` `05`
`dd` `22`
`HH` 시간 (24시간제) `14`
`hh` 시간 (12시간제) `02`
`mm` `07`
`ss` `59`
`a` 오전/오후 `AM` / `PM`
`E` 요일 `Wed`
--- ### 5.3 사용자 지정 포맷 예시 ```java DateTimeFormatter customFmt = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 (E) a hh:mm"); String formatted = now.format(customFmt); System.out.println("형식화된 시간: " + formatted); ``` --- ## 6. 로깅용 포맷 출력 Java에는 기본 로그 시스템인 `java.util.logging.Logger`가 있다. --- ### 6.1 Logger 기본 사용 ```java import java.util.logging.*; Logger logger = Logger.getLogger("MyLogger"); logger.info("정보 메시지"); logger.warning("경고 메시지"); logger.severe("에러 메시지"); ``` --- ### 6.2 포맷 문자열과 함께 쓰기 ```java String name = "다인"; int age = 25; logger.info(String.format("사용자 이름: %s, 나이: %d", name, age)); ``` --- ### 6.3 로그 레벨 종류
레벨 설명
`SEVERE` 심각한 오류
`WARNING` 경고
`INFO` 일반 정보
`CONFIG` 설정 관련 정보
`FINE` 디버깅 수준의 정보
--- ### 6.4 출력 형식 커스터마이징 - 로그 출력 위치(콘솔/파일) - 출력 메시지 포맷 (시간, 로그 레벨, 메시지 내용 등) - `logging.properties` 파일로 설정 변경 가능 ---