Constant vs Literal : 상수와 리터럴의 차이점?

hyemini·2022년 7월 26일
0

프로그래밍 용어

목록 보기
1/2

상수와 리터럴의 공통점


상수[Constant]와 리터럴[Literal]은 변하지 않는다는 공통점이 있다. ' 변하지 않는다. '라는 말의 의미를 살피면, 단 한 번의 정의로 불변의 값을 갖는다는 의미이다.

' 그러면 상수와 리터럴은 같네! '라고 생각할 수 있으니 코딩을 통해 더 낱낱이 들여다 보자.

상수 [Constant]


상수(常數, constant)란 수식에서 변하지 않는 값을 뜻한다. 이것은 변하는 값 변수와 반대이다.
(출처 : https://ko.wikipedia.org/wiki/%EC%83%81%EC%88%98)

위키백과에 나와있는 상수의 정의다. 허나 이는 수학의 언어로는 당연스럽게 맞지만 프로그래밍 용어로서 상수를 이해하는데 방해가 된다. 우리는 상수를 단순 '숫자'가 아닌 '클래스나 구조체'로 정의할 수 있어서이다.

( 참조변수 메모리의 주소값 고정 )

final Korea k = new Korea();
n = new Korea(); --- (불가능)

위와 같이 final로 한 번 선언된 객체는 다시 재선언을 하는 것이 불가능하다. 정확히는 k라고 생성된 객체가 메모리의 한 주소값을 가지게 되었으므로 변경이 불가능 한 것이다.

final Korea k = new Korea();
k.seoul = "서울"; --- (가능)
k.seoul = "seoul"; --- (가능)

하지만 final로 지정된 것은 'Korea'라는 클래스에 한정되어있으므로 클래스 내부에 있는 인스턴스 변수는 몇 번이고 재선언 할 수 있다. 이는 선언된 k의 주소값이 변경되는 것이 아닌, k 내부의 인스턴스가 가리키는 주소값이 변경되었음이다. 이는 k의 주소값과 무관하므로 final로 지정되었음에도 그 인스턴스는 영향을 받지 않고 변할 수 있는 것이다.

리터럴 [Literal]


반대로, 우리가 수학의 언어로 통용되어 생각되는 '변하지 않는 수'가 프로그래밍 언어 안에서 리터럴이다. 엄밀히는 int, double, float등 숫자에 국한되는 것이 아닌 boolean, char 까지 범위가 넓다. 리터럴은 값 자체의 '고유성'을 갖는다.

final int mini = 3;

여기서 mini가 '상수', 3이 '리터럴'인 것이다.


< Conclusion >

  • 공통점 : 변하지 않음.
  • 차이점 :
    - 상수 : 변하지 않는 '변수'
    - 리터럴 : 변하지 않는 '값' 또는 '데이터'
profile
테크베이비 미니입니다:)

0개의 댓글