언어 및 도구들 공부/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이라는 배열을 사용하고 있습니다. 이 배열은 각 요일의 이름을 저장하고 있을 것으로 예상됩니다.
    • 예를 들어, 배열이 다음과 같이 정의되어 있다고 가정할 수 있습니다:

      java

       
      String[] day_name = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};
  • first_day-1을 사용하여 배열의 인덱스를 접근합니다. 이는 Calendar.DAY_OF_WEEK 값이 1부터 시작하기 때문에, 배열의 0-based 인덱스와 맞추기 위해서 first_day-1을 사용한 것입니다.
    • 예를 들어, first_day가 3이라면, day_name[2]가 되어 "화요일"을 출력하게 됩니다.

전체 흐름 요약

  1. 이번 달 1일로 cal 객체의 날짜를 설정합니다.
  2. 이번 달 1일의 요일을 숫자로 가져옵니다 (Calendar.DAY_OF_WEEK 값을 사용).
  3. 그 숫자를 출력합니다.
  4. 해당 숫자를 day_name 배열을 이용하여 요일 이름으로 변환하고, 출력합니다.

실행 예시

만약 2024년 9월에 대해 이 코드가 실행된다면:

  • cal.set(Calendar.DAY_OF_MONTH, 1)로 날짜가 2024년 9월 1일로 설정됩니다.
  • cal.get(Calendar.DAY_OF_WEEK)는 1일이 일요일이므로 1을 반환합니다.
  • 그러면 다음과 같이 출력됩니다:
    java

     
    이번 달의 시작 요일 인덱스 = 1
    이번 달의 시작 요일 = 일요일

이런 식으로 해당 달의 첫 번째 요일을 알아내고 그 이름을 출력하는 방식입니다.

추가 질문이나 코드 수정이 필요하다면 언제든지 말해주세요!