본문 바로가기
Today/Study

23/10/18~19

by shulk 2023. 10. 19.

1.

4주차 과제에서 내가 푼 방법이랑 답안지랑 비교해보다가 답안은 switch문을 사용할때 break문을 안적어서 이러면 나머지 코드도 다 실행하지 않나 생각 들었는데 알아보니 자바12부터 도입된 스위치문에서 화살표 이용하면 break문 따로 적지 않아도 된다 했다. 

이렇게 두줄이상 일때 {} 할때도 break필요한지 알아보니 필요없다했다.

case "+" -> {
   this.calculator.setOperation(new AddOperation());
   System.out.println("더하기 입니다");
}


결론적으로 스위치문을 이렇게 break없이 할 수 있다.

switch (operationInput) {
            case "+" -> this.calculator.setOperation(new AddOperation());
            case "-" -> this.calculator.setOperation(new SubstractOperation());
            case "*" -> this.calculator.setOperation(new MultiplyOperation());
            case "/" -> this.calculator.setOperation(new DivideOperation());
        }

2.

정규식의 숫자 범위 표현에서  private static final String Check_num = "^[1-6]*$"; 이렇게 하면 

오직 1~6만 허용 하는줄 알았는데 한자리수 말고 36 이렇게 해도 허용이라 
오직 한자리수 1~6 만 허용하게 하고싶으면 "^[1-6]*$";에서 ' * ' 를 빼주면 된다. => "^[1-6]$"; 

 

3.

private static final String Check_num = "^[1-6]$"; 이렇게 정규식표현에서 숫자 범위 1~6으로만 설정했는데 동적으로 허용범위를 계속 변경하게 할땐,예를들어 최소 1은 고정이고 최대숫자를 int goods_size에 의해 변하게 한다면
String Check_num = "^[1-" + goods_size + "]$"; 이렇게 문자열 연산으로 할 수 있다.

 

4.

부모클래스에서 A필드값이 1이였는데 어떤 메소드로 A필드값을 13으로 바꾸고

부모클래스 안에서 자식클래스 인스턴스 생성후 자식 생성자 실행시켜서 부모 A필드값 출력하게 했는데 부모의 바뀐값13을 출력 안하고 초기값을 1을 가져와서 왜그런가 알아보니 
자식 클래스 생성자에 명시적으로 적혀 있지 않지만 자동으로 super()을 추가한다해서 부모클래스에서 작업후 바뀐값 가져오는게 아닌  부모클래스 생성자 작업했을때의 값을 가져온다.

5.

float형이나 double형은 소수점의 정밀도가 완벽하지 않아 연산 값의 오차가 생길 수 있어서 정확한 계산을 위해서는 BigDecimal을 이용해야한다.

'Today > Study' 카테고리의 다른 글

23/10/30  (0) 2023.10.30
23/10/27  (0) 2023.10.27
23/10/24  (0) 2023.10.24
23/10/23  (0) 2023.10.23
23/10/20  (0) 2023.10.20