Constanct : 변하지 않는 값. 변하지 않는 변수. 위치값이 고정. 클래스가 상수라면 안에 속성값은 변함
Literal : 변하지 않는 데이터. 그게 클래스라면 그 안에 값이 변하지 않음.
const age = 4 ; (javascript)
final int age = 4 ; (java)
fianl Test t1 = new Test();
t1 = new Test(); (X)
t1.age = 3; (O)
좌측 변수 우측 데이터
좌측=age=상수/ 우측=데이터=리터럴
데이터에는 숫자가 올수도 있고, 클래스같은 애들이 올수도 있다. 클래스가 상수라면 그 안에 속성값은 변경가능.
데이터에는 참조변수가 올수도 있다. 주소값이 복사되는 것. 같은 대상을 가르키게 된다.
Literal : 우측의 데이터 자체. 변하지 않는 데이터
보통 객체= 인스턴스(클래스 데이터)는 안에 있는 값들이 변하지 않는 (staic class, immutable class-String클리스, Color클래스, VO class)경우를 제외하고는
동적으로(내부 값을 바꿀 수 있음) 사용하기 위해 만드는거라 리터럴이 될 수 없다.
javascript에서는 객체를 반들 때 new 클래스(); 로 클래스탬플릿을 이용하서 만들거나
클래스 없이 리터럴 방식으로 {속성명name:값, 속성명age:값} 그냥 만들기도한다. 느슨한 문법이라 리터럴방식으로 만들었음에도 코딩하다가 객체.속성명gender=값; 이렇게 추가도 되고,
코딩하다가 delete 객체.속성명gender=값; 삭제도가능하다.
리터럴은 변하지 않는 데이터라고 했는데 이게 가능하다는거는 미친짓이라고하는거고, 가능해도 유지보수를 위해 사용을 지양하야한다~~
댓글