변하지 않는 데이터
= 변하지 않는 데이터를 저장한 변하지 않는 변수
보통 데이터 내에서 상수 선언 시 public static final
형태로 선언
특정 클래스 내에서 사용되는 데이터를 상수로 제공하면 문자열의 오타나 정수형 파라미터를 사용하는 경우 등 다양한 어려움에서 오는 문제점 해결 가능!
-> 주로 상수는public static final
키워드를 사용하기 때문에 상수의 이름을 명확하게 지정함으로써 복잡한 데이터도 이름만으로 단순히 사용이 가능하게 됨!
상수 활용의 예)
Calendar
클래스를 사용하여 날짜 정보를 관리할 때Calendar
클래스의get()
메서드를 통해 연도, 월, 일 등의 정보를 가져와야 하는데 항목을 지정할 때Calendar
클래스에서 제공하는 상수를 통해 지정 가능Calendar cal = Calender.getInstance(); System.out.println("올해는 몇 년도? " + cal.get(Calender.YEAR));
public static void main(String[] args) {
CarInfo c = new CarInfo();
c.setCompany(CarInfo.COMPANY_HYUNDAI);
c.setCarModelName(CarInfo.CAR_MODEL_NAME_SONATA);
c.setColor(CarInfo.COLOR_BLACK);
// Setter 호출해서 값을 저장할 때
// 직접 입력하는 것이 아니라 클래스명.상수명으로
// 자동 완성하기 때문에 오류 발생 확률 줄어듦
if(c.getCompany() == CarInfo.COMPANY_HYUNDAI) {
System.out.println("현대자동차입니다");
} else {
System.out.println("현대자동차가 아닙니다");
}
// [현대자동차입니다] 출력됨
// 비교할 때도 직접 입력하는 게 아니라
// 상수명 바로 불러와서 비교하기 때문에
// 오류 발생 확률이 줄어든다
class CarInfo {
private String company;
private Strng carModelName;
private int color;
// 제조사 정보를 저장하는 상수 선언
public static final String COMPANY_HYUNDAI = "HYUNDAI";
public static final String COMPANY_KIA = "KIA";
// 모델 이름을 저장하는 상수 선언
public static final String CAR_MODEL_NAME_SONATA = "SONATA";
public static final String CAR_MODEL_NAME_K5 = "K5";
// 색상 정보를 저장하는 상수 선언
public static final int COLOR_BLACK = 0x000001;
public static final int COLOR_WHITE = 0xFFFFCC;
public String getCompany() {
return company;
}
public String setCompany(String company) {
this.company = company;
}
// private으로 멤버변수를 선언했기 때문에
// Getter와 Setter 필요함!
public String getCarModelName() {
return carModelName;
}
public String setCarModelName(String carModelName) {
this.carModelName = carModelName;
}
public int getColor() {
return color;
}
public int setColor(int color) {
this.color = color;
}
}