해당 게시물은 [제대로 파는 자바 (Java) - by 얄코]를 수강한 내용을 바탕으로 작성하였습니다.
포매팅
주어진 형식에 따라 문자열 생성
(1) 해당 문자열 자체.formatted() : 13+버전에 추가됨
(2) String.format(해당 문자열, ) : 이전 버전에서의 방식
String str1 = "%s의 둘레는 반지름 X %d X %f입니다.";
String circle = "원";
int two = 2;
double PI = 3.14;
// 💡 formatted : 주어진 형식에 따라 문자열 생성
// ⭐️ 13+버전에 추가됨. 편의상 강의에서 많이 사용할 것
String str2 = str1.formatted(circle, two, PI);
// 원본은 불변!
// 💡 이전 버전에서의 방식. 실무에서 사용하려면 기억
String str3 = String.format(str1, circle, two, PI);
%b
불리언
%d
10진수 정수
%f
실수
%c
문자
%s
문자열
%n
(포맷 문자열 내 바꿈)
▶ 시스템의 printf 메소드 : String.format과 같은 형식으로 출력 → 줄바꿈을 하지 않으므로 직접 넣어줘야 함
System.out.printf("%s의 둘레는 반지름 X %d X %f입니다.%n", circle, two, PI);
▶ %n 은 OS별로 일정하게 줄바꿈이 되도록 적절한 개행문자를 넣어줌
- 윈도우 : \\r\\n , 맥&리눅스 : \\n
→ 포매팅에서 줄바꿈할 때는 %n 사용할 것!
정수
String[] intFormats = {
"%d", // 1. 기본
"%13d", // 2. n 자리수 확보, 오른쪽 정렬
"%013d", // 3. 빈 자리수 0으로 채움
"%+13d", // 4. 양수는 앞에 + 붙임
"%,13d", // 5. 숫자에 쉼표 사용하여 보임
"%-13d", // 6. 자리수 확보, 왼쪽 정렬
"%+,013d"
};
실수
String[] fltFormats = {
"%f", // 1. 기본 (소수점 6자리, 0으로 메움)
"%.2f", // 2. 소수점 n자리까지 (반올림하여 표시)
"%13.2f", // 3. 정수자리 확보, 소수자리 제한
"%,f", // 4. 정수부분 긴 경우 쉼표 사용하여 표시
"%+013.2f", // 5
"%-13.2f", // 6
};
문자열
String[] strFormats = {
"%s", // 1. 기본
"%9s", // 2. 자리 확보
"%.2s", // 3. 몇글자만 나타내기
"%9.2s", // 4.
"%-9s", // 5. 왼쪽 정렬
};
null 문자열
▶ 빈 문자열과 null은 다름
빈 문자열(길이가 0) : 힙 공간에 자리를 차지 null문자열 : 힙에 할당되지 않음, 가리키는 곳이 없음
※ 문자열을 외부로부터 받아올 경우 등에서 문자열 내용이 있는지/비어있는지/null인지 알 수 없으므로 아래처럼!
▶ 초기화되지 않은 변수는 컴파일 에러 발생, null문자열은 정상실행 또는 런타임 에러 발생
String notInitStr; //초기화X
// ⚠️ 컴파일 오류 발생
// System.out.println(notInitStr);
String nullStr2 = null; //null
// 코드에 따라 정상실행 또는 어떤 기능을 수행해야하는 경우는 런타임 오류
System.out.println(nullStr2);