변하지 않는 데이터
= 변하지 않는 데이터를 저장한 변하지 않는 변수
보통 데이터 내에서 상수 선언 시 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;
}
}