윤년(leap year)/ 평년(common year)
- 윤년 : 태양력에서 2월이 29일까지 있는 해 / 평년 : 태양력에서 2월이 28일까지 있는 해
- 1년 == 365.2422일 => 1년 == 365일 -> 매년 0.2422일 오차가 생김
- [율리우스력]에서는 4년마다 2월을 29일
- [그레고리오력]에서는 치윤법
- ① 서력기원 연수가 4로 나누어떨어지는 해는 우선 윤년으로 하고, =>4의 배수 년도에 2월 29일 => 100번 나옴 -> +3번
- ② 그중에서 100으로 나누어떨어지는 해는 평년으로 하며, => 100의 배수 년도 => 4번 나옴 ->96번 -> -1번
- ③ 다만 400으로 나누어떨어지는 해는 다시 윤년으로 정하였다. => 400의 배수 년도 => 1번 나옴 =>97번
- 이로써 1년의 평균 길이를 365.2425일로 정하여 역에 썼으므로 실제의 1년보다 0.0003일이 길다.
- => *년 수가 4로 나누어떨어지고 100으로 나눌 수 없는 해 그리고 400으로 나누어떨어지는 해*
- => (year%4 == 0 && year%100 != 0) || year %400 ==0
- [치윤법]에 따라 400년에 97년을 윤년으로 두고 있다.
함수(메서드)
- 정의 : 프로그래밍에서 반복되는 명령어들을 찾아서 별도로 묶어서 필요할 때마다 불러서 사용할 수 있도록 한 것
- 메서드 : 클래스 안에 선언된 함수
- 이벤트 핸들러 : 이벤트를 처리하는 함수
- 프로시져(Procedure), function
- 선언 형식
-
[접근지정자][기타제어자] 리턴자료형 함수명([매개변수...]){ 명령코딩; 명령코딩; [return 리턴값;] }
-
- 장점
- 코딩량 감소 -> 컴파일 용량 감소 -> 실행 성능 향상
- 코드의 가독성이 좋아짐, 유지보수 용이
- 팀 작업 -> 개발 생산성 향상 -> 수익
- 똑같은 함수명으로 중복으로 선언할 수 있다. -> 중복함수 : 오버로딩(overloading)
- 오버로딩할 때 지켜야 할 규칙 : 매개변수의 타입이 다르던지, 개수가 반드시 틀려야 한다.
클린코드
1.
| for(int i = 1; i <= 9; i++) { for (int j=2; j <=5;j++) System.out.printf("%d*%d=%d\t",j,i,i*j); System.out.println(); } System.out.println(); for(int i = 1; i <= 9; i++) { for (int j=6; j <=9;j++) System.out.printf("%d*%d=%d\t",j,i,i*j); System.out.println(); } |
| for (int k = 1; k <= 2; k++) { for(int i = 1; i <= 9; i++) { for (int j=4*k-2; j <=4*k+1;j++) System.out.printf("%d*%d=%d\t",j,i,i*j); System.out.println(); } System.out.println(); } |
2.
| public static void leapCheck(int year) { if ((year%4 == 0 && year %100 != 0 )|| year%400 == 0) System.out.println("Leap year"); else System.out.println("Common year"); } |
| public static boolean isleapCheck(int year) { if ((year%4 == 0 && year %100 != 0 )|| year%400 == 0) return true; else return false; } -> 바로 출력하고 끝내는 것보다 이렇게 처리해야 다른 곳에서도 이 값을 사용할 수 있다. |
3.
| for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 9; j++) { for (int k = 3*i-1; k <= 3*i+1; k++) { if(k == 10) break; System.out.printf("%d*%d=%d\t", k, j, k*j); } System.out.println(); } System.out.println(); } |
| for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 9; j++) { for (int k = 3*i-1; k <= 3*i+1 && k<=9; k++) System.out.printf("%d*%d=%d\t", k, j, k*j); System.out.println(); } System.out.println(); } |
4.
| if(i %2 == 0) { sum -= i; System.out.printf("%d+",i); } else { System.out.printf("%d-",i); sum += i; } |
| sum += sw? -i : i; System.out.printf(sw? "%d+" : "%d-" ,i); sw = !sw; |
5.
| int [] fibonacci = new int[100]; int i = 2, sum = 0; fibonacci[0] = 1; fibonacci[1] = 2; sum = fibonacci[0]+ fibonacci[1]; System.out.printf("%d+%d+",fibonacci[0],fibonacci[1]); for (i = 2; i < fibonacci.length;i++) { fibonacci[i] = fibonacci[i-1]+ fibonacci[i-2]; if(fibonacci[i] <= 100) sum1 += fibonacci[i]; else break; System.out.printf("%d+",fibonacci[i]); } |
| int first = 1; int second = 2; System.out.printf("%d+%d+",first, second); int sum = first + second; int third; while((third = first + second) <= 100) { sum += third; System.out.printf("%d+",third); first = second; second = third; } |