Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 상수란 무엇이고, final 키워드로 정의하는 방법

상수(Constant)란 무엇인가?

상수는 한 번 값이 할당되면 더 이상 변경할 수 없는 변수를 의미합니다. 자바(Java)는 C 언어의 const처럼 상수를 위한 별도의 내장 키워드를 제공하지 않으며, 대신 final 키워드를 활용해 상수를 구현합니다.

상수를 사용하면 프로그램의 가독성과 유지보수성이 크게 향상됩니다. 예를 들어 프로그램 곳곳에서 사용되는 원주율이나 최대값 같은 고정된 값을 상수로 관리하면, 그 의미를 명확하게 전달할 수 있습니다. 또한 상수는 JVM 및 애플리케이션에 의해 캐싱되기 때문에 성능 최적화에도 도움이 됩니다.

final 키워드로 상수 정의하기

변수를 상수로 만드는 방법은 아주 간단합니다. 변수 선언부 앞에 final 키워드를 붙여주기만 하면 됩니다.

문법(Syntax)

final float pi = 3.14f;

위 문장은 float 타입 변수 "pi"를 값 3.14f를 가지는 상수로 선언합니다. 이후 프로그램 어디에서도 "pi"의 값을 변경할 수 없습니다. 만약 "pi = 5.25f;"처럼 값을 재할당하려고 하면, 자바 컴파일러는 컴파일 시점에 오류를 발생시킵니다.

한 가지 주의할 점은, 상수라고 해서 반드시 선언과 동시에 초기화해야 하는 것은 아니라는 것입니다. 먼저 선언만 해두고 나중에 값을 할당해도 되지만, 이 경우에도 값은 단 한 번만 할당할 수 있습니다.

기본형(primitive) 타입별 상수 선언 예제

아래 예제에서는 byte, short, int, long, float, double, boolean, char 등 모든 기본형 데이터 타입 변수를 final 키워드를 통해 상수로 선언하고, 선언과 동시에 초기화하는 방식과 선언 후 할당하는 방식 두 가지를 함께 보여줍니다.

public class ConstantsDemo {
    public static void main(String args[]) {
        final byte var1 = 2;
        final byte var2;
        var2 = -3;
        final short var3 = 32;
        final short var4;
        var4 = -22;
        final int var5 = 100;
        final int var6;
        var6 = -112;
        final long var7 = 20000;
        final long var8;
        var8 = -11223;
        final float var9 = 21.23f;
        final float var10;
        var10 = -121.23f;
        final double var11 = 20000.3223;
        final double var12;
        var12 = -11223.222;
        final boolean var13 = true;
        final boolean var14;
        var14 = false;
        final char var15 = 'e';
        final char var16;
        var16 = 't';
        // 모든 변수의 값 출력
        System.out.println("value of var1 : "+var1);
        System.out.println("value of var2 : "+var2);
        System.out.println("value of var3 : "+var3);
        System.out.println("value of var4 : "+var4);
        System.out.println("value of var5 : "+var5);
        System.out.println("value of var6 : "+var6);
        System.out.println("value of var7 : "+var7);
        System.out.println("value of var8 : "+var8);
        System.out.println("value of var9 : "+var9);
        System.out.println("value of var10 : "+var10);
        System.out.println("value of var11 : "+var11);
        System.out.println("value of var12 : "+var12);
        System.out.println("value of var13 : "+var13);
        System.out.println("value of var14 : "+var14);
        System.out.println("value of var15 : "+var15);
        System.out.println("value of var16 : "+var16);
    }
}

실행 결과(Output)

value of var1 : 2
value of var2 : -3
value of var3 : 32
value of var4 : -22
value of var5 : 100
value of var6 : -112
value of var7 : 20000
value of var8 : -11223
value of var9 : 21.23
value of var10 : -121.23
value of var11 : 20000.3223
value of var12 : -11223.222
value of var13 : true
value of var14 : false
value of var15 : e
value of var16 : t

추가 팁: 상수 네이밍 규칙

실무에서는 상수임을 명확히 드러내기 위해 이름을 모두 대문자로 작성하고 단어 사이를 밑줄(_)로 구분하는 것이 일반적인 관례입니다. 예를 들어 MAX_SIZE, PI_VALUE처럼 작성합니다. 또한 여러 메서드나 클래스 전체에서 공유하는 상수는 보통 static final 조합으로 클래스 레벨에 선언합니다.