새소식

Java/제대로 파는 자바

[제대로 파는 자바 (Java)-by 얄코] 문자열의 포매팅과 null

  • -

해당 게시물은 [제대로 파는 자바 (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은 다름

 

 

빈 문자열(길이가 0) : 힙 공간에 자리를 차지
null문자열 : 힙에 할당되지 않음, 가리키는 곳이 없음

 

 

 

※ 문자열을 외부로부터 받아올 경우 등에서 문자열 내용이 있는지/비어있는지/null인지 알 수 없으므로 아래처럼!

String defaultStr =
        (nullStr != null && !nullStr.isEmpty())
                ? nullStr : "(기본값)";

 

 

 

 

▶ 초기화되지 않은 변수는 컴파일 에러 발생,  null문자열은 정상실행 또는 런타임 에러 발생

        String notInitStr;  //초기화X
        //  ⚠️ 컴파일 오류 발생
//        System.out.println(notInitStr);

        String nullStr2 = null;  //null
        //  코드에 따라 정상실행 또는 어떤 기능을 수행해야하는 경우는 런타임 오류
        System.out.println(nullStr2);

 

 

 

 

▶ 참조 자료형의 인스턴스는 null 가능

( 그냥 원시값말고 참조 자료형의 인스턴스로는 원시값도 null 가능)

//  ⭐️ 이 외에도 참조 자료형의 인스턴스는 null 가능
Object obj = null;
System sys = null;

//  ⭐️ 원시값들도 참조 자료형의 인스턴스로는 null 가능
Integer nullInt1 = null;
Double nullDbl1 = null;
Boolean nullBool1 = null;
Character nullChr1 = null;

//  ⚠️  원시값은 불가
//int nullInt2 = null;
//double nullDbl2 = null;
//boolean nullBool2 = null;
//char nullChr2 = null;
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.