상수와 리터럴

프로그래밍 용어 2020.10.15 댓글 moonsu
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
반응형

댓글