Java : 상수와 리터럴

커비·2024년 10월 21일
0

Java

목록 보기
6/55
post-thumbnail

📌 상수

  • 한 번만 값이 저장 가능한 변수
  • 숫자에 의미있는 이름을 붙여 코드 자체에 가독성을 늘리기 위해 상수 사용
// 선언 방법
final 변수타입 변수이름;
// 상수 활용 예시

class Variable2_1 {
	public static void main(String[] ages) {
    	int score = 100;
        System.out.println("score = " + score);
        score = 90;
        System.out.println("score = " + score);
        
        fonal int finalScore = 100;
        System.out.println("finalScore = " + finalScore);
// finalScore = 90; // Error 발생
    }
}

📌 리터럴

  • 그 자체로 값을 의미하는 것
  • 기존의 상수와 같은 의미이지만 Java에서 상수를 '한 번만 갑이 저장 가능한 변수'라는 의미로 사용하기 때문에 구별하기 위해 사용하는 언어임

📌 변수, 상수, 리터럴 구별

// 예시 코드

class Variable2_2 {
	public static void main(String[] args) {
    	int score = 100;
        final int finalScore = 1000;
    }
}

// score : 변수
// finalScore : 상수
// 100, 1000 : 리터럴

📌 리터럴의 접두사와 접미사

  • 리터럴에 붙이는 접미사는 정수형의 L, 실수형의 f만 주의하면 된다.
  • 접미사는 대소문자를 구별하지 않지만 L의 소문자 l은 숫자 1과 혼동되기에 대문자를 사용하는 것을 권장함
  • 0b, 0x 와 같은 진수를 나타내는 접두사 또한 대소문자를 구별하지 않음

📍 정수형은 byte, short, int, long 타입으로 여러개 존재

  • 정수형의 int, 실수형의 double은 기본형이기에 접미사를 붙이지 않음
  • long타입은 구분을 위해 100L처럼 리터럴 마지막에 접미사로 L을 붙임

📍 실수형은 float, double 타입이 존재

  • float의 리터럴에는 f, double 리터럴에는 d가 붙음
  • 실수형은 2개 밖에 존재하지 않아 접미사 f를 사용하면 구분할 수 있어서 접미사 d는 생략을 허용함
// 리터럴 사용방법 예시

class Variable2_3 {
    public static void main(String[] args) {
        // boolean flag1 = 22; // Error 발생
        boolean flag2 = false; // true, false 만 가능!
        
        // char grade1 = 'AA'; // Error 발생
        // char grade2 = "A"; // Error 발생
        char grade3 = 'A'; // char 타입은 이렇게 하나의 문자만 가능!
        char ch = '\n'; // 개행문자(\n, \t 등) 가능!
    
        // String name1 = 'C'; // Error 발생
        // String name2 = 'Choi'; // Error 발생
        String str = "C"; // 한 문자 가능! 문자가 하나여도 문자열로 인식!
        String name3 = "choi"; // 여러 문자 가능!
        
        // byte val1 = 128; // Error 발생
        byte val2 = 127; // int 와 같은 리터럴로 저장하지만 범위가 지정되어 있음! -128 ~ 127
        
        short sval = 128;
        
        // 리터럴 접두사 예제
        // int의 진수 표현
        int ob = 0b0101; // 2진수, 접두사 0b
        int i = 100; // 10진수
        int oct = 0100; // 8진수, 접두사 0
        int hex = 0x100; // 16진수, 접두사 0x
        
        long price = 2_147_483_648L; // _ 를 사용하여 숫자 표현 가능!
        // long l1 = 2_147_483_648; // Error 발생, int 범위를 넘었으니 L 접미사 필수!
        long l2 = 100; // int의 범위를 넘지 않으면 L 생략 가능! 
        
        // float tax1 = 3.14;
        float tax2 = 3.14f;
        
        double score1 = 3.14159265358979; // d 생략 가능!
        double score2 = 3.14159265358979d;
        
        float f1 = 10f; // 10.0f
        double d1 = 10.; // 10.0
        double d2 = .10; // 0.10
        double d3 = 1e3; // 1000.0 , e3 = 10의 3제곱
        double d4 = -1e3; // -1000.0
    }
}

📌 변수와 리터럴의 타입 불일치

  • 범위가 '변수 > 리터럴' 인 경우 : OK
  • 범위가 '변수 < 리터럴' 인 경우 : Error
  • byte, short 변수에 int 리터럴 저장 : OK (단, 변수의 타입 범위 이내여야함)
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글