언어 및 도구들 공부/Java
DAY_OF_MONTH, DAY_OF_WEEK
Dr.Mlem
2024. 9. 26. 14:16
cal.set(Calendar.DAY_OF_MONTH, 1); int first_day = cal.get(Calendar.DAY_OF_WEEK); System.out.println("이번 달의 시작 요일 인덱스 = "+first_day); System.out.println("이번 달의 시작 요일 = "+ day_name[first_day-1]); 이 코드의 흐름을 분석해줘
이 코드는 자바에서 Calendar 객체를 이용해 이번 달의 시작 요일을 찾고, 그 요일의 이름을 출력하는 과정입니다. 코드의 각 부분을 차례로 분석해 보겠습니다.
1. cal.set(Calendar.DAY_OF_MONTH, 1);
- cal 객체는 자바의 Calendar 클래스의 인스턴스입니다.
- cal.set(Calendar.DAY_OF_MONTH, 1)은 이번 달의 1일로 날짜를 설정합니다. 즉, cal 객체가 나타내는 날짜를 현재 달의 첫 번째 날로 변경하는 것입니다.
- 예를 들어, cal 객체가 2024년 9월을 나타내고 있으면, 이 줄의 코드가 실행된 후 cal은 2024년 9월 1일을 가리키게 됩니다.
2. int first_day = cal.get(Calendar.DAY_OF_WEEK);
- cal.get(Calendar.DAY_OF_WEEK)는 요일을 반환합니다. 자바의 Calendar 클래스에서 DAY_OF_WEEK는 해당 날짜의 요일을 나타내는 필드로, 반환 값은 1부터 7까지의 값을 가집니다.
- 자바에서 요일의 값은 다음과 같이 매핑됩니다:
- 1: 일요일
- 2: 월요일
- 3: 화요일
- 4: 수요일
- 5: 목요일
- 6: 금요일
- 7: 토요일
- 자바에서 요일의 값은 다음과 같이 매핑됩니다:
- cal.get(Calendar.DAY_OF_WEEK)는 현재 설정된 날짜(1일)의 요일을 숫자로 반환하며, 이 숫자는 first_day 변수에 저장됩니다.
3. System.out.println("이번 달의 시작 요일 인덱스 = "+first_day);
- first_day 변수에 저장된 값을 출력합니다. 이 값은 이번 달 1일의 요일을 나타내는 숫자입니다.
- 예를 들어, first_day가 3이라면, 이는 이번 달 1일이 화요일이라는 것을 의미합니다.
4. System.out.println("이번 달의 시작 요일 = "+ day_name[first_day-1]);
- 이 줄에서 day_name이라는 배열을 사용하고 있습니다. 이 배열은 각 요일의 이름을 저장하고 있을 것으로 예상됩니다.
- 예를 들어, 배열이 다음과 같이 정의되어 있다고 가정할 수 있습니다:
javaString[] day_name = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};
- 예를 들어, 배열이 다음과 같이 정의되어 있다고 가정할 수 있습니다:
- first_day-1을 사용하여 배열의 인덱스를 접근합니다. 이는 Calendar.DAY_OF_WEEK 값이 1부터 시작하기 때문에, 배열의 0-based 인덱스와 맞추기 위해서 first_day-1을 사용한 것입니다.
- 예를 들어, first_day가 3이라면, day_name[2]가 되어 "화요일"을 출력하게 됩니다.
전체 흐름 요약
- 이번 달 1일로 cal 객체의 날짜를 설정합니다.
- 이번 달 1일의 요일을 숫자로 가져옵니다 (Calendar.DAY_OF_WEEK 값을 사용).
- 그 숫자를 출력합니다.
- 해당 숫자를 day_name 배열을 이용하여 요일 이름으로 변환하고, 출력합니다.
실행 예시
만약 2024년 9월에 대해 이 코드가 실행된다면:
- cal.set(Calendar.DAY_OF_MONTH, 1)로 날짜가 2024년 9월 1일로 설정됩니다.
- cal.get(Calendar.DAY_OF_WEEK)는 1일이 일요일이므로 1을 반환합니다.
- 그러면 다음과 같이 출력됩니다:
java이번 달의 시작 요일 인덱스 = 1
이번 달의 시작 요일 = 일요일
이런 식으로 해당 달의 첫 번째 요일을 알아내고 그 이름을 출력하는 방식입니다.