IMG-LOGO
공지사항 :

자바에서 상수(Constant)

lmkfox - 2025-06-21 07:29:15 20 Views 0 Comment

1. 자바 상수란?

  • 한 번 값을 지정하면 변경할 수 없는 변수

  • 선언 시 final 키워드를 사용

  • 상수는 일반적으로 대문자로 표기하고, 단어 사이는 밑줄(_)로 구분합니다

final int MAX_USERS = 100;
final String COMPANY_NAME = "OpenAI";


2. 자바 상수의 데이터 타입

상수도 결국 변수이므로, 모든 데이터 타입이 상수로 사용 가능합니다. 다만, 용도에 따라 자주 사용되는 데이터 타입이 있습니다.

2.1 기본형(Primitive Type)

타입

설명

예시

int

정수형 상수, 개수나 ID 값 등

final int MAX_COUNT = 50;

long

큰 범위의 정수 상수

final long LIMIT = 1_000_000L;

float

소수점 숫자 상수 (접미사 f 필수)

final float PI = 3.14f;

double

정밀한 실수 상수 (기본 실수 타입)

final double RATE = 0.05;

char

문자 상수

final char GRADE = 'A';

boolean

논리형 상수 (참/거짓)

final boolean DEBUG = true;

byte, short

특수한 목적에 사용되는 작은 정수 타입

final byte FLAG = 0x01;

2.2 참조형(Reference Type)

타입

설명

예시

String

문자열 상수

final String APP_NAME = "MyApp";

배열

변하지 않는 배열 참조 (내용은 변경 가능)

final int[] SCORES = {90, 80, 70};

클래스

변하지 않는 객체 참조 (내용은 변경 가능)

final User user = new User();

참고: 참조형 상수는 참조(주소)는 변경 불가하지만, 그 객체의 내부 상태는 변경 가능합니다. 이를 **불변 객체(immutable object)**로 만들고 싶다면, 클래스 자체가 불변성(immutability)을 갖도록 설계해야 합니다.


3. 상수 선언과 초기화 규칙

  • final 변수는 한 번만 초기화할 수 있음

  • 선언과 동시에 초기화하거나, 생성자에서 초기화 가능

final int A = 10;         // 선언과 동시에 초기화
final int B;
B = 20;                   // 나중에 초기화 (한 번만 가능)

클래스 멤버 변수로 선언된 final은 반드시 생성자에서 초기화하거나, 선언 시 초기화해야 합니다.


4. 

static final

 상수 (정적 상수)

클래스 전체에서 공유할 상수는 static final로 선언합니다. 이것이 일반적으로 말하는 “자바 상수”입니다.

public class Config {
    public static final int TIMEOUT = 30;
    public static final String URL = "https://example.com";
}

  • 클래스 이름으로 접근 가능: Config.TIMEOUT

  • 메모리에 한 번만 로딩됨 (정적 변수)


5. 상수와 열거형(enum)

여러 개의 연관된 상수들을 선언할 때는 enum을 사용하는 것이 더 적절합니다.

public enum Day {
    MONDAY, TUESDAY, WEDNESDAY
}

enum도 클래스이며 내부적으로 final static 상수처럼 동작합니다.


6. 상수 사용 시 주의 사항

  • final을 붙여도 참조형 객체 내부 값은 변경 가능하므로, 불변 객체 사용 또는 방어적 복사(defensive copy) 고려

  • 상수 값은 의미 있는 이름으로 선언하여 매직 넘버(Magic Number) 제거

  • 여러 곳에서 사용되는 상수는 public static final로 선언하여 재사용성 증가


결론 요약

항목

설명

키워드

final, static final

사용 가능한 타입

모든 기본형과 참조형

자주 사용되는 타입

int, double, String, boolean

상수 표기법

대문자 + 언더스코어 (MAX_SIZE)

선언 위치

지역 변수, 클래스 멤버, 인터페이스 등

상수 집합 관리

enum으로 처리 가능


댓글