IT
자바 상수(Constant)
자바에서 **상수(Constant)**는 값이 변하지 않는 변수를 의미하며, 선언 시 지정된 값을 프로그램 실행 중에 변경할 수 없습니다. 상수는 주로 final 키워드를 사용하여 정의하며, 의미 있는 이름을 붙여 코드의 가독성, 유지보수성, 안정성을 높이는 데 기여합니다.
1. 상수의 선언 방법
자바에서 상수는 다음과 같이 선언합니다:
final 데이터타입 변수명 = 값;
예시:
final int MAX_SCORE = 100;
final double PI = 3.14159;
final String GREETING = "Hello";
-
final 키워드는 변수의 값을 한 번만 할당할 수 있도록 만듭니다.
-
변수명은 대문자와 언더스코어(_)로 구성하는 것이 관례입니다.
2. 상수에 사용되는 데이터 타입
상수는 모든 데이터 타입에 대해 사용할 수 있으며, 크게 나누면 아래와 같습니다.
2.1 기본형(Primitive Type) 상수
타입
예시
설명
int
final int DAYS = 7;
정수형 상수
long
final long TIME = 1000L;
긴 정수. 접미사 L 필요
float
final float RATE = 1.5f;
실수. 접미사 f 필요
double
final double PI = 3.14;
실수. 기본 실수형 타입
char
final char GRADE = 'A';
문자형 상수
boolean
final boolean FLAG = true;
논리값 상수
2.2 참조형(Reference Type) 상수
참조형도 final을 사용하여 상수처럼 사용할 수 있습니다. 하지만 객체의 내용은 변경 가능합니다.
final String NAME = "JAVA"; // 불변 객체
final int[] NUMS = {1, 2, 3}; // 배열 참조는 불변, 내용은 변경 가능
-
final String은 불변(immutable)이라 진짜 상수처럼 사용 가능
-
final 배열, final 객체는 참조는 상수지만, 내부 요소는 변경 가능
3. 상수에 사용할 수 있는 Wrapper 클래스 타입
기본형 타입에 대응되는 **래퍼 클래스(wrapper class)**도 상수 정의에 사용됩니다.
기본형
래퍼 클래스
예시
int
Integer
final Integer MAX = Integer.valueOf(10);
double
Double
final Double PI = 3.14159;
boolean
Boolean
final Boolean IS_ACTIVE = Boolean.TRUE;
Wrapper 클래스는 null을 저장할 수 있기 때문에, 객체 기반 로직에서 활용됩니다.
4. 상수의 활용 예시
예시 1: 물리 상수
final double GRAVITY = 9.8;
final double LIGHT_SPEED = 299_792_458;
예시 2: 조건 비교
final int ADMIN_ROLE = 1;
final int USER_ROLE = 0;
if (role == ADMIN_ROLE) {
System.out.println("관리자 권한");
}
예시 3: 클래스 상수 (static final)
public class MathConstants {
public static final double PI = 3.141592;
public static final int MAX_VALUE = 1000;
}
사용:
double area = MathConstants.PI * r * r;
static final 상수는 클래스 이름으로 접근할 수 있고, 인스턴스를 생성하지 않아도 됩니다.
5. 상수와 열거형(enum)
상수를 여러 개 정의할 때는 enum을 사용하는 것이 더 안전하고 명확할 수 있습니다.
enum Direction {
EAST, WEST, SOUTH, NORTH
}
이런 식으로 의미 있는 이름으로 상수를 묶어서 사용할 수 있으며, 타입 안정성과 가독성이 뛰어납니다.
6. 요약
항목
설명
선언 방식
final 데이터타입 변수명 = 값;
변수명 관례
대문자 + 언더스코어 (MAX_LENGTH, PI)
사용 가능한 타입
기본형, 참조형, 래퍼 클래스 모두 가능
변경 여부
final로 선언된 변수는 값 재할당 불가
static final
클래스 상수로서 여러 곳에서 공유 가능
enum
열거형으로 그룹 상수 표현 가능
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.