728x90
반응형
상수 Constant
- 항상 같은 값을 갖는 데이터(불변데이터) = Literal(리터럴)
- 변수 중에서도 값이 변하지 않는 변수를 상수라고 함 (= 상수형 변수)
- 보통 변수에 static final 을 붙여서 표현 static : 클래스 내의 유일한 데이터이며, 클래스명으로 접근 final : 값 변경 금지
- 상수로 선언되는 변수는 이름을 대문자로 선언하며 단어 사이의 구분 기호로 언더스코어(_) 기호 사용)
class Car2 {
// 상수(static final)를 사용하여 데이터를 관리하는 경우
private String company;
private String model;
private int color;
// 데이터 저장에 필요한 값들을 상수로 미리 선언해둠
// => 이 때, 상수명을 최대한 식별이 용이하도록 관련있는 이름으로 지정
public static final String COMPANY_HYUNDAI = "현대자동차";
public static final String COMPANY_KIA = "기아자동차";
public static final String MODEL_SONATA = "SONATA";
public static final String MODEL_TUCSON = "TUCSON";
public static final int COLOR_PERFECT_BLACK = 0x000000;
public static final int COLOR_BARCELONA_RED = 0xFF0000;
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
}
class Car {
// 상수(static final)를 사용하지 않고 데이터를 관리하는 경우
private String company;
private String model;
private String color;
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
class Earth {
// 상수 선언
// 상수는 보통 이름을 대문자로 선언(단어 사이 구분은 _ 기호 사용)
public static final double EARTH_RADIUS = 6400;
public static final double EARTH_AREA =
4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
}
System.out.println("지구 반지름 : " + Earth.EARTH_RADIUS + "km");
System.out.println("지구 표면적 : " + Earth.EARTH_AREA + "km^2");
System.out.println("===========================================");
// 어떤 클래스에 데이터를 저장한 후 해당 데이터를 판별해야하는 경우
// 데이터에 대한 문자열이나 정수 데이터 비교 시
// 비교데이터를 잘못 지정하거나, 데이터 저장 시 잘못 저장할 경우로 인해
// 실제 비교할 때 올바른 비교가 수행되지 않을 수 있다!
Car car = new Car();
car.setCompany("HYUNDAI");
car.setModel("SONATA");
car.setColor("RED");
if(car.getCompany().equals("hyundai")) {
// 대문자 HYUNDAI 와 소문자 hyundai 는 다른 문자열로 취급됨
// => equalsIgnoreCase() 메서드를 호출하면 해결할 수는 있음
System.out.println("현대 자동차!");
} else {
System.out.println("타사 자동차!");
}
if(car.getModel().equals("쏘나타")) {
// "SONATA" 와 "쏘나타" 는 다른 문자열이며 다른 차종으로 취급됨
// => equalsIgnoreCase() 메서드를 호출해도 해결 불가능
System.out.println("쏘나타네요!");
} else {
System.out.println("쏘나타가 아니네요!");
}
System.out.println("=======================================");
/*
* 클래스에서 상수를 통해 사용될 데이터를 제공하는 경우
* - 사용자 입장에서 데이터 사용 시 오타 등의 위험을 줄이고
* 상수명만으로 해당 데이터의 실제 내용을 몰라도 사용 가능하므로
* 편의성 및 코드의 안정성, 유지보수성이 증대됨
*/
Car2 car2 = new Car2();
car2.setCompany(Car2.COMPANY_HYUNDAI);
car2.setModel(Car2.MODEL_SONATA);
car2.setColor(Car2.COLOR_PERFECT_BLACK);
if(car2.getCompany().equals(Car2.COMPANY_HYUNDAI)) {
System.out.println("현대 자동차!");
} else if(car2.getCompany().equals(Car2.COMPANY_KIA)) {
System.out.println("기아 자동차!");
}
if(car2.getModel().equals(Car2.MODEL_SONATA)) {
System.out.println("쏘나타네요!");
} else if(car2.getModel().equals(Car2.MODEL_TUCSON)) {
System.out.println("투싼이네요!");
}
if(car2.getColor() == Car2.COLOR_BARCELONA_RED) {
System.out.println("빨간색이네요!");
} else if(car2.getColor() == Car2.COLOR_PERFECT_BLACK) {
System.out.println("검은색이네요!");
}
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 자바의 예외처리 Exception (0) | 2021.01.19 |
---|---|
[JAVA] 자바의 인터페이스 Interface (0) | 2021.01.19 |
[JAVA] 자바의 Static (0) | 2021.01.19 |
[JAVA] 자바의 추상 클래스 & 메서드 (0) | 2021.01.19 |
[JAVA] 자바의 참조형변환 (레퍼런스 형변환) (0) | 2021.01.19 |