본문 바로가기
JAVA

특별한 리터럴, 숫자 리터럴에서의 밑줄 문자 [코딩백과 with JAVA]

by GangDev 2024. 12. 21.

특별한 리터럴

  1. null 리터럴:

    • 모든 참조 타입의 기본값을 나타냅니다.
    • 원시 타입 변수에는 할당할 수 없습니다.
    • 예: String str = null;
    • 주로 객체의 존재 여부를 확인하는 마커로 사용됩니다.
  2. 클래스 리터럴(CLass Literals):

    • .class를 타입 이름 뒤에 붙여 만듭니다.
    • 해당 타입을 나타내는 Class 객체를 반환합니다.
    • 에: Class<?> clazz = String.class;
    • 리플렉션(Reflection)이나 클래스 정보를 얻을 때 유용합니다.

유니코드 이스케이프 시퀀스 사용

유니코드 이스케이프 시퀀스는 문자 리터럴과 문자열 리터럴뿐만 아니라 프로그램의 다른 부분에서도 사용할 수 있습니다. 예를 들어, 필드 이름에 사용할 수 있습니다.

String fieldName = "\u03B1"; // 그리스 문자 알파

모범 사례

  1. 유니코드 사용:

    • 편집기와 파일 시스템이 허용한다면 직접 유니코드 문자를 사용하세요.
    • 그렇지 않은 경우 유니코드 이스케이프 시퀀스를 사용하세요.
  2. 이스케이프 시퀀스:

    • 필요한 경우에만 이스케이프 시퀀스를 사용하세요.
    • 예: \n (줄 바꿈), \" (큰따옴표)
  3. 문자열 연결:

    • 긴 문자열을 여러 줄에 걸쳐 작성할 때는 '+' 연산자나 StringBuilder를 사용하세요.
  4. 문자열 리터럴 비교:

    • 문자열의 내용을 비교할 때는 equals() 메서드를 사용하세요.
    • == 연산자는 객체 참조를 비교하므로 원하는 결과가 아닐 수 있습니다.
  5. null 사용:

    • 객체의 존재 여부를 확인하는 마커로 사용하세요.
    • 예: if (obj != null) { ... }
  6. 클래스 리터럴:

    • 리플렉션(Reflection)이나 클래스 정보를 얻을 때 유용합니다.

숫자 리터럴에서 밑줄 문자 사용하기

Java SE 7 이상에서는 숫자 리터럴 내에서 밑줄 문자(_)를 사용하여 가독성을 높일 수 있씁니다. 이 기능은 특히 큰 숫자를 표현할 때 유용합니다.

밑줄 문자 사용의 목적

  1. 가독성 향상:

    • 큰 숫자를 더 쉽게 읽고 이해할 수 있게 합니다.
  2. 숫자 그룹화:

    • 숫자를 논리적인 그룹으로 나눌 수 있습니다.
  3. 코드의 의도 명확화:

    • 숫자의 의미를 더 명확하게 전달할 수 있습니다.

밑줄 문자 사용 예시

public class UnderscoreExample {
    public static void main(String[] args) {
        // 대용량 정수
        long population = 7_924_110_000L; // 세계 인구 (2023년 추정)
        long bytesInTerabyte = 1_024L * 1_024L * 1_024L * 1_024L; // 1TB = 1,024GB = 1,024MB = 1,024KB = 1,024B

        // 금융 계산
        double annualSalary = 50_000.00; // 연봉
        double taxRate = 0.25; // 세율 25%
        double taxAmount = annualSalary * taxRate;

        // 과학적 계산
        double avogadrosNumber = 6.022_140_857e23; // 아보가드로 수
        double gravitationalConstant = 6.674_30e-11; // 중력 상수 (m^3 kg^-1 s^-2)

        // 16진수 색상 코드
        int red = 0xFF_00_00; // 빨강
        int green = 0x00_FF_00; // 초록
        int blue = 0x00_00_FF; // 파랑

        // 2진수 IP 주소
        long ipAddress = 0b1100_0000_1010_1100_0000_0000_0000_0000_0000; // 192.168.0.1

        // 출력
        System.out.println("세계 인구: " + population);
        System.out.println("1TB의 바이트 수: " + bytesInTerabyte);
        System.out.println("연간 세금: $" + String.format("%.2f", taxAmount));
        System.out.println("아보가드로 수: " + avogadrosNumber);
        System.out.println("중력 상수: " + gravitationalConstant);
        System.out.println("빨강: " + Integer.toHexString(red));
        System.out.println("초록: " + Integer.toHexString(green));
        System.out.println("파랑: " + Integer.toHexString(blue));
        System.out.println("IP 주소 (이진수): " + Long.toBinaryString(ipAddress));
    }
}

밑줄 문자 사용 규칙

  1. 숫자 사이에만 사용 가능:

    • 숫자의 시작이나 끝, 또는 소수점 앞뒤에는 사용할 수 없습니다.
  2. 연속된 밑줄:

    • 여러 개의 연속된 밑줄을 사용할 수 있습니다.
  3. 모든 숫자 리터럴에 적용:

    • 정수, 부동소수점, 16진수, 2진수 리터럴 모두에 사용할 수 있습니다.
  4. 컴파일 시 제거:

    • 컴파일 과정에서 밑줄 문자는 제거됩니다.

밑줄 문자 사용 제한

  1. 숫자 시작/끝:

    • 숫자의 시작이나 끝에 밑줄을 사용할 수 없습니다.
    • 예: 52_(잘못됨), _52(잘못됨)
  2. 소수점 인접:

    • 부동소수점 리터럴에서 소숮머 앞뒤에 밑줄을 사용할 수 없습니다.
    • 예: 3_.1415F (잘못됨), 3._1415F (잘못됨)
  3. 접미사 인접:

    • F 또는 L 접미사 앞에 밑줄을 사용할 수 없습니다.
    • 예: 999_99_9999_L (잘못됨)
  4. OX 접두사:

    • 16진수 리터럴의 0x 접두사 바로 뒤에 밑줄을 사용할 수 없습니다.
    • 예: 0x_52 (잘못됨)

  1. 큰 숫자 표현:

    • 1,000 이상의 숫자를 표현할 때 특히 유용합니다.
  2. 단위 구분:

    • 시간, 날짜, IP 주소 등 특정 단위가 있는 숫자에 사용하면 좋습니다.
  3. 이진수 표현:

    • 2진수 리터럴에서 비트 그룹을 구분하는 데 유용합니다.
  4. 상수 정의:

    • 의미 있는 상수를 정의할 때 사용하면 코드의 의도를 더 명확히 할 수 있습니다.
public static final long MILLISECONDS_IN_A_DAY = 86_400_000;
public static final int BITS_IN_A_BYTE = 0b1000_0000;
  1. 일관성 유지:

    • 팀이나 프로젝트 내에서 일관된 스타일을 유지하는 것이 좋습니다.
  2. 과도한 사용 피하기:

    • 너무 많은 밑줄을 사용하면 오히려 가독성이 떨어질 수 있으므로 적절히 사용해야 합니다.
// 과도한 사용 (권장하지 않음)
int x3 = 5_______2;

편히 모아진 글 보시려면 아래 위키독스 링크 >>
https://wikidocs.net/book/17111