728x90
상수(constant)와 리터럴(literal)이란 무엇이고 어떻게 다를까?
1. 상수 (constant)
상수란 변하지 않는 값이다.하지만 프로그래밍을 처음 배울 땐 int 타입의 변수를 상수로 지정해 값을 변경하게 하지 못하는 예제를 주로 접해 상수는 r-value 를 지칭한다던가 숫자만 넣어야 한다는 오해를 하곤 한다.
상수는 변하지 않는 변수이다. 아래 예제와 같은 경우
final int A = 50;
상수는 변하지 않는 변수 즉, A를 지칭한다.
변수는 int, string 타입의 간단한 데이터가 올 수도 있지만 구조체, 클래스 등의 객체 값으로도 사용될 수 있다.
그래서 이러한 객체를 갖는 변수를 상수화 했을 때, 객체 내 데이터까지 변하지 않는다고 착각하는 경우가 있지만 참조한 주소를 변경할 수 없을 뿐 주소가 가리키는 값들은 모두 변경할 수 있다.
즉 아래 예는 불가능 하지만
final TEST a = new TEST();
a = new TEST(); // 불가능하다
클래스 내 데이터를 변경하는 것은 가능하다.
a.value = 10;
2. 리터럴 (literal)
리터럴은 데이터 그 자체이다. 리터럴이야말로 바로 상수에서 오해한 넣어야 할 숫자이고 r-value 를 말한다.
아래 예제에서
final int A = 50;
A는 상수지만 50은 리터럴이다.
즉 상수란 변하지 않는 변수
리터럴이란 변하지 않는 데이터를 의미한다.
728x90
반응형
댓글