코드 작성
package ex_final; public class Ex2 { public static void main(String[] args) { 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")) { if (car.getCompany().equalsIgnoreCase("hyundai")) { // 대문자 HYUNDAI 와 소문자 hyundai는 다른 문자열로 취급됨 // => equalsIgnoreCase() 메서드를 호출하면 해결 가능 System.out.println("HYUNDAI 자동차!"); } else { System.out.println("타사 자동차!"); } if (car.getModel().equals("쏘나타")) { // 쏘나타와 SONATA는 다른 문자열로 취급됨 // => equalsIgnoreCase() 메서드를 호출하면 해결 불가능 System.out.println("SONATA네요!!"); } else { System.out.println("SONATA가 아니네요!"); } /* * 클래스에서 상수를 통해 사용될 데이터를 제공하는 경우 - 사용자 입장에서 데이터 사용 시 오타 등의 위험을 줄이고 * 상수명만으로 해당 데이터의 실제 내용을 몰라도 사용 가능하므로 편의성 및 코드의 안정성, 유지보수성이 증대! */ Car2 car2 = new Car2(); car2.setCompany(Car2.COMPANY_KIA); car2.setModel(Car2.MODEL_SONATA); car2.setColor(Car2.COLOR_PERPECT_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_PERPECT_BLACK)) { System.out.println("검은색이네요!"); } } } class Car2 { // 상수를 사용하여 데이터를 관리하는 경우 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_PERPECT_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 { // 상수를 사용하지 않고 데이터를 관리하는 경우 private String company; private String model; private String color; // Getter / Setter 정의 public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } } class Earth { // 상수 선언 // 상수는 보통 이름을 대분자로 선언(단어 사이 구분은 _ 기호를 사용) public static final double EARTH_RADIUS = 6400; public static final double EARTH_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS; }
상수를 활용한 연습!
출력 결과
6400.0 km
5.147185403641517E8 km^2
----------------------------------------
HYUNDAI 자동차!
SONATA가 아니네요!
기아자동차
쏘나타네요!
검은색이네요!
나의 소감
상수를 이용하면 사용이 용이하고 다른 사람이 보기에도 한눈에 알아보기 쉽고 사용할때 오타도 줄일 수있고
코드의 안정성이 좋아지고 유지 보수가 편리하다는 등의 장점이 있다
static과 final을 쓰기 때문에 인스턴스 생성없이 사용 가능하고 값을 변경할 수 없기 때문에
협업을 할때도 굉장히 유용할듯 하다!
'JAVA' 카테고리의 다른 글
인터페이스 활용 | 22/01/03 (0) | 2022.01.11 |
---|---|
인터페이스(Interface) | 22/01/03 (0) | 2022.01.11 |
final | 22/01/03 (0) | 2022.01.11 |
싱글톤(Singleton) 활용 | 21/12/30 (0) | 2022.01.11 |
상속(Polymorphism) 활용 | 21/12/30 (0) | 2022.01.11 |