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 |