Day13 - 미션6

dike·2021년 11월 18일
0

오늘 한 것

  • 한글시계 리팩토링
    • switch-case를 사용하지 않기 위해 enum을 학습하여 적용했다.
  • 달력 구현
    • 연도와 달을 입력받아 해당 달의 달력을 출력한다.

새로 알게 된 것

switch-case의 작동 방식

  • enum 예제를 따라해보던 중 아래에 있는 코드를 실행했더니 모든 case가 출력되었다. 예제에선 case APPLE의 코드만 출력되었는데 내 코드는 왜 모두 출력되었을까?

  • break를 빠뜨렸다.switch-case는 break로 escape하지 않으면 처음 만난 케이스 이후의 모든 코드가 실행된다.

Fruit type = Fruit.APPLE;
        switch (type) {
            case APPLE:
                System.out.println(57 + "Kcal, " + Fruit.APPLE.getColor() + Fruit.APPLE.getPrice());
            case BANANA:
                System.out.println(44 + "Kcal, " + Fruit.PEACH.getColor());                
            case PEACH:
                System.out.println(32 + "Kcal, " + Fruit.BANANA.getColor());
        }

열거형의 특징

  • enum은 사실상 클래스이다. 때문에 생성자, 멤버, 메소드를 가질 수 있다.
// enum은 연관된 상수의 집합이다.
class Fruit {
    public static final Fruit APPLE = new Fruit();
    public static final Fruit PEACH = new Fruit();
    public static final Fruit BANANA = new Fruit();
}
// 이 코드는 위의 코드와 사실상 같다.
enum Fruit {
    APPLE,
    PEACH,
    BANANA;
}

enum은 많은 곳에서 사용하던 디자인 패턴을 언어가 채택해서 문법적인 요소로 단순화시킨 것이라고 할 수 있다.

🤔

  • 자바의 쓰레드, 스트림, 람다 등을 공부해서 적용해보고 싶다.
  • 인텔리제이의 단축키를 익혀 생산성을 높이자.

0개의 댓글