본문 바로가기

공부46

실행 컨텍스트 관련 예제 다음은 실행 컨텍스트 관련해 자주 등장하는 예제이다. 일전에 작성한 적이 있으나 해결법 관련해 한 번 더 남기고자 한다. 의도한 것은 1초 뒤, 0부터 4까지 순차적으로 출력하는 것이었으나 결과를 보면 5가 다섯 번 출력된 것을 확인할 수 있다. 그 이유는 1초 뒤 콜백 함수의 실행 시 참조하는 i 값이 5이기 때문이다[1][2]. 이를 해결하기 위한 네 가지 해결방법이 있다. 첫째, 전통적인 방법으로 콜백 함수로 클로저를 활용해 변수를 기억하도록 하는 방법[3]이다. 둘째, ES6에서 추가된 방법으로 let을 이용한 방법이다. 이는 함수 스코프인 var 변수와는 달리 let으로 선언된 변수는 for-loop마다 블록 스코프를 갖기 때문이다. 콜백 함수에서 참조하는 i값은 블록 스코프마다 서로 다르기 때.. 2023. 3. 15.
중복 제거 후 병합 알고리즘을 풀다 보면 배열에 담긴 값들을 매핑해주거나 빈도를 파악해야 하는 경우가 있다. 이때 매핑값들은 객체로 주어지는데 이 정보는 중복되면 안 된다. 보통은 매핑값으로 주어지는 경우에 중복 없이 주어지지만, 객체의 특성을 살펴보기 위해 남겨두도록 한다. 전개구문을 이용해 병합 시 중복 제거할 수 있다. 한편 배열을 돌며 빈도를 파악해야 하는 경우엔 다음과 같이 가능하다. 이미 살펴봤듯이 병합 시 중복값이 제거되므로, 이전값이 존재하더라도 현재값이 덮어씌우게 된다. 참고로 맵[1]의 경우 다음과 같이 중복을 제거할 수 있다. ------ 1. 맵과 객체의 가장 큰 차이 중 하나는 맵은 문자열 아닌 값, 즉 함수나 객체 등도 프로퍼티의 키 값으로 쓰일 수 있다는 점이다. 2023. 3. 13.
예외 처리 시 RETURN문 위치 최근 요청받은 서버 API를 작성하다가 try-catch 구문에서 return문을 어디에 작성해야 하는지, 구체적으로는 finally에 작성해야 하는지에 대해 얘기하다 혼동이 와서 이 글을 작성하게 되었습니다. _____ 메소드 작성 시 예외 처리를 위해[1] try-catch 구문을 사용하곤 한다. 한편 리턴 타입이 void가 아니라면 값을 반환해주어야 한다. 그렇다면 return문은 어디에 작성되어야 할까? 먼저 지역변수를 사용하여 try-catch 구문 밖에 return문을 위치시키는 경우부터 코드로 확인해보았다. public static void main(String[] args) { System.out.println(method(null)); System.out.println("=========.. 2022. 1. 17.
날짜 유효성 검사 최근 요청사항 중 날짜에 대한 REST API 작업을 할 일이 있었는데, 간략히 기록해보고자 합니다. 참고로 현재 프로젝트의 자바 버전은 8 미만(1.5)이기 때문에 Date, Calendar, SimpleDateFormat 클래스를 사용하였습니다. 혹 내용 중 틀린 부분이나 피드백이 있다면 댓글로 남겨주시면 감사하겠습니다. _____ 인터페이스 호출 시 파라메터로 넘어온 날짜[1]가 특정 조건에 부합하면 Y, 그렇지 않으면 N을 클라이언트에 던져주어야 했다[2]. 조건은 다음과 같았다. A. 주말 포함 공휴일[3]이 아니다. B. 오늘 기준 공휴일 제외[4] 5일 이전, 5일 이후 이내여야 한다. 각각의 코드[5]는 다음과 같다. import java.text.SimpleDateFormat; impor.. 2022. 1. 17.