3. 상수와 리터럴

오현석·2022년 2월 21일
0

수학적으로 상수는 12, 123, 3.14, A와 같은 값이지만 프로그래밍에서는 조금 다른의미를 가집니다.
상수는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만 한번 값을 정하면 다른 값으로 변경할 수 없다.
따라서 변수의 타입 앞에 final 키워드를 붙여주기만 하면 된다.

   int a = 10;
   final int A = 10;
		
   a = 20;
// A = 20; 

a,A 는 같은 10을 가지고 있지만 대문자와 소문자는 별도로 인식하기 때문에 별도의 메모리에 저장되어있습니다.
a는 변수이기 때문에 선언 이후 20이라는 정수로 재정의할 수 있지만, A는 변수 앞에 final 키워드가 붙어 상수가
되었기 때문에 재정의 할시 오류가 발생합니다.

코드를 입력하세요
  final int MAX_SPEED = 100;

따라서 상수는 선언과 동시에 초기화 해야하며, 암묵적인 룰로 상수명은 대문자로만 쓰입니다.


변수와 상수에 대입되는 값들은 수학적으로는 상수이지만, 프로그래밍에서 상수는 다른의미로 저장되었기 때문에
다른이름으로 불리며, 이를 "리터럴(literal)"이라고 정의합니다.

   int a = 10;         // 10이라는 리터럴
   final int A = 30;   // 30이라는 리터럴
		
   final int MAX_SPEED = 100; // 100이라는 리터럴

즉, 리터럴은 우리가 기존에 알고 있던 상수의 다른 이름일 뿐입니다.


이러한 리터럴에도 변수와 같이 타입이 있으며, 변수의 타입은 저장될 값의 타입(리터럴의 타입)으로 결정됩니다.
따라서 리터럴에 타입이 없다면 변수의 타입도 필요하지 않습니다.

// float pi = 3.14;
   float pi = 3.14f;

변수 pi는 소수점이 있기 때문에 float 리터널 타입을 가지며 접미사가 붙지 않을시 에러가 발생합니다.

타입에 접미사가 붙는 리터럴 타입은 long, float, double등이 있습니다
long L
float f
double d
접미사가 붙습니다.

하지만 타입이 다르더라고 저장범위가 넓은 타입에 좁은 타입의 값이 저장되는 것은 허용됩니다.

   long l = 123; // 접미사가 붙지않은 정수 리터널은 int 리터럴이 사용되며 
                 // long타입은 int 타입보다 범위가 넓기때문에 에러가 발생하지않는다
   
   double pi = 3.14f; // double타입이 float타입보다 넓기 때문에 에러가 발생하지않는다.
   
   에러발생 경우 --------------------------------------------------------------------
   
     int i = 34324344042  // int타입보다 범위가 넓은값을 저장하기 때문에 에러발생
  
     float pi = 3.14;  //접미사가 붙지않은 실수 리터널은 double 리터럴이 사용되며
   				       //  double타입은 float타입보다 범위가 넓기 때문에 에러발생
   
profile
지망생

0개의 댓글