자바 (ref. 자바의정석)

상수와 리터럴 - JAVA

쿠쿠s 2022. 2. 5. 11:32

 

 

 

상수(constant) 는 변수와 마찬가지로 값을 저장할 수 있는 공간 이지만, 변수와 달리 값을 저장하게 되면 다른 값으로 변경이 불가합니다. 변수 선언과 동일하며 변수타입 앞에 final 키워드를 붙여주면 됩니다.

 

 

상수는 반드시 선언과 동시에 초기화를 해야합니다. 왜냐하면 앞서 말씀드린 다른 값으로 변경이 불가 하기 때문입니다.

public class constant {
    final int YEAR = 2022; // year 라는 이름의 상수 선언
    final int AGE = 29; // age 라는 이름의 상수 선언
    AGE = 30; //에러
}

상수는 모두 대문자로 하는 것이 암묵적인 관례이며, 여러 단어로 이루어져 있다면 '_' 로 구분합니다.

 

 

 

리터럴은 원래 20, 2.15, 'C', "ABC"(*리터럴도 타입을 가진다) 와 같은 값들이 상수 인데 이미 상수는 값을 저장하면 변경할 수 없는 저장공간으로 정의를 해서 이와 구분하기위해 상수대신 리터럴이라는 용어를 사용합니다. 리터럴은 상수의 다른 이름일 뿐입니다.

변수(variable) 하나의 값을 저장하기 위한 공간
상수(constant) 값을 한번만 저장할 수 있는 공간
리터럴(literal) 그 자체 값으로 의미

ex) fianl int AGE = 29       'AGE => 상수'  ||  '29  => 리터럴'

 

그러면 상수는 왜 필요할까요?

 

상수를 이용하면 단순 리터럴을 사용할때 보다 코드의 의미가 명확해지고, 수정이 일어날 경우에는 상수의 초기화만 다른값으로 변경하면 됩니다.

 

 

삼각형, 사각형의 면적을 구하는 공식을 예로들면 이해하기 쉽습니다.

public class constant {
    //리터럴 직접 사용
    int triangleArea = (20 * 10) / 2; //삼각형의 면적
    int rectangleArea = 20 * 10; // 사각형의 면적
    
    //상수 사용
    final int WIDTH = 20; 
    final int HEIGHT = 10;

    int getTriangleArea = (WIDTH * HEIGHT) / 2;
    int getRectangleArea = WIDTH * HEIGHT
}


리터럴을 직접 사용 했을때는 물론 답을 구할 수 있지만 폭이나 넓이가 변경이 됐을 때 수정해야하는 부분이 많습니다.

하지만 상수를 사용 했을때 공식의 의미가 명확해지고, 수정이 필요할 때 상수의 초기화만 다른 값으로 변경하면 됩니다.

'자바 (ref. 자바의정석)' 카테고리의 다른 글

배열의 복사 - JAVA  (0) 2022.02.08
for each 문 - JAVA  (0) 2022.02.07
문자열의 비교 - JAVA  (0) 2022.02.06
변수란? - JAVA  (0) 2022.02.04
자바언어의 특징  (0) 2022.02.04