일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래머스
- 다이나믹 프로그래밍
- 그리디 알고리즘
- 영속성
- 스케줄링
- 병행성
- 파일시스템 구현
- Direct12
- 락
- 멀티프로세서
- 알고리즘
- 다이나믹프로그래밍
- 컨디션 변수
- DirectX12
- 쓰레드
- 디자인패턴
- 백준
- 병행성 관련 오류
- DirectX 12
- 운영체제
- I/O장치
- directx
- 렌더링 파이프라인
- 자료구조
- 멀티쓰레드
- OS
- 타입 객체
- 그리디알고리즘
- codility
- 동적계획법
- Today
- Total
기록공간
Java의 주요 클래스(3) 본문
Calendar 클래스
java.util.Calendar 클래스는 날짜와 시간을 객체 모델링화 한 클래스로 연, 월, 일, 요일, 시, 분, 초까지의 시간 및 날짜와 관련된 정보를 제공한다. Calendar 클래스는 추상 클래스이기 때문에 객체를 생성할 수 없으며 실제적인 메서드 구현을 Calendar 클래스의 서브 클래스인 GregorianCalendar 클래스에 정의되어 있다.
Calendar cal = new Calendar();
//-> 이와 같은 구문을 통해 인스턴스 생성이 불가.
Calendar 클래스를 생성할 수 있는 코드는 다음과 같다.
// 1
Calendar cal = Calendar.getInstance();
// 스태틱 클래스 메소드를 이용한 객체 생성
// 2
Calendar cal = new GregorianCalendar();
// 자식 클래스 인스턴스를 생성하고 업캐스팅
// 3
GregorianCalendar cal = new GregorianCalendar();
// (※ GregorianCalendar : Calendar 클래스의 하위 클래스)
시스템으로부터 현재 시스템 시간 정보를 얻어올 때 getInstance()라는 정적(static) 메소드를 이용하여 객체를 생성할 수 있다. 또한 getInstance는 내부적으로 GregorianCalendar 객체를 생성하여 돌려주기 때문에 GregorianCalendar 객체를 직접 생성하여 시간 정보를 구할 수도 있다.
이렇게 생성된 Calendar 클래스 객체는 시스템의 현재 날짜와 시간 정보를 가진다.
get() 메서드
Calendar rightNow = Calendar.getInstance();
int y = rightNow.get(Calendar.YEAR);
System.out.println(y);
//--==>> 2020
int m = rightNow.get(Calendar.MONTH) + 1;
System.out.println(m);
//--==>> 8
int d = rightNow.get(Calendar.DATE);
System.out.println(d);
//--==>> 27
int w = rightNow.get(Calendar.DAY_OF_WEEK);
System.out.println(w);
//--==>> 5
Calendar 클래스 메서드인 get()을 통해 날짜 관련 정보를 얻어낼 수 있다. get()을 사용하면 현재 날짜를 기준으로 날짜 정보를 알 수 있다. get() 메서드는 매개변수로 어떤 날짜 정보를 얻어올지를 정할 수 있다. Calendar.YEAR는 연도, Calendar.MONTH는 달, Calendar.DATE는 일, 그리고 Calendar.DAY_OF_WEEK는 요일을 얻어온다.
주의할 점이 있는데 MONTH를 get() 하면 항상 그 값의 +1을 해줘야 현재 구하려는 날짜의 MONTH가 된다. 만약 get(Calendar.MONTH)로 10이 나왔다면 Calendar에 설정된 날짜 정보는 11월이다. 그리고 요일을 get()하면 1부터 7까지 숫자가 나오는데, 1이 일요일이다. (Calendar.SUNDAY를 출력해보면 1이다) 숫자 순서대로 일요일(1) ~ 토요일(7)까지 설정되어 있다.
set() 메서드
Calendar rightNow = Calendar.getInstance();
rightNow.set(2020, 9, 20);
set() 메서드는 사용자가 원하는 날짜로 설정하는 기능을 가지고 있다. set(년도, 월, 일) 을 입력하면 달력이 그 날짜에 맞춰 세팅된다. 여기서도 주의할 점이 하나 있는데 set() 할 때 월은 항상 -1을 해주어야 올바른 날짜가 입력된다.
getActualMaximum() 메서드
getActualMaximum() 메서드는 현재 날짜에 속하는 달의 최대 일수를 구해준다. 매개변수로 Calendar.DATE를 입력하면 현재 일수에 속하는 달의 최대 일수를 반환한다.
add() 메서드
add() 메서드는 현재 날짜에서 사용자가 원하는 기간만큼이 지났을 때의 날짜로 세팅해준다. 만약 200일 후의 날짜로 세팅을 원한다면 add(Calendar.DATE, 200)을 해주면 된다.
그 외에 아주 다양한 메서드들이 존재하므로, API Document를 참고하면 더욱 유용하게 쓸 수 있을 것이다.
Math 클래스
java.lang.Math 클래스는 수학과 관련된 유용한 속성과 함수들을 제공하는 클래스로 생성자가 있긴 하지만 이 생성자는 private으로 선언되어 있기 때문에 외부에서 객체를 생성할 수 없다. 단, 모든 메서드가 static으로 정의되어 있으므로 객체를 생성하지 않고 클래스의 이름을 통해 바로 접근하여 사용하는 것이 가능하다.
정말 많은 기능을 제공하기 때문에 주요 기능을 한 곳에 요약하여 정리하면 다음과 같다.
public static final double E = 2.71...;
//: 자연 로그 상수
public static final double PI = 3.141592...;
//: 원주율(π)
public static double sin(double a)
public static double cos(double a)
public static double tan(double a)
//: sin(a), cos(a), tan(a) 값을 반환한다. (삼각함수)
public static double asin(double a)
public static double acos(double a)
public static double atan(double a)
//: asin(a), acos(a), atan(a) 값을 반환한다. (삼각함수의 역함수)
public static double toRadians(double angdeg)
//: 각도(angdeg)를 라디안(radian)으로 바꾸어 반환한다.
public static double toDegrees(double angrad)
//: 라디안(angrad)을 각도(degree)로 바꾸어 반환한다.
public static double exp(double a)
//: e 의 a 승을 구하여 반환한다.
public static double log(double a)
//: 로그(log) 값을 구하여 반환한다.
public static double sqrt(double a)
//: a 의 제곱근을 구하여 반환한다.
public static double ceil(double a)
//: a 보다 크거나 같은 정수를 반환한다. (올림의 개념)
public static double floor(double a)
//: a 보다 작거나 같은 정수를 반환한다. (절삭의 개념)
public static double pow(double a, double b)
//: a 의 b 승을 구하여 반환한다.
public static int round(float a)
public static long round(double a)
//: a 를 반올림하여 결과값을 반환한다.
public static double random()
//: 0.0 ~ 1.0 사이의 난수(임의의 실수)를 발생시켜 반환한다.
Random 클래스
java.util.Random 클래스는 여러 형태의 난수를 발생시켜 제공하는 클래스이다. Math 클래스를 정적 메서드인 random() 메서드도 난수를 제공하지만 0.0 ~ 1.0 사이의 실수 형태만 발생하게 되므로 필요한 여러 형태의 난수를 만들어내기 위해서는 추가적인 연산들을 수행해야 한다. 그래서 자바는 여러 형태의 난수를 발생시켜주는 전용 클래스인 Random 클래스를 별도로 제공하고 있다.
nextInt() 메서드
Random rd = new Random();
int n = rd.nextInt(45) + 1; // 1 ~ 45 중 한 개 발생
nextInt() 메서드는 난수를 정수형태로 반환해준다. 매개변수로 정수 값 N을 넘겨주면 그 값을 기준으로 0 ~ N 범위 내의 난수를 반환해준다.
역시 이 외에 다양한 클래스 메서드가 존재하므로 API Document를 참고하면 많은 도움이 된다.
'Java' 카테고리의 다른 글
컬렉션 프레임워크 (Collection Framework) - 1 (stack, queue) (0) | 2020.09.16 |
---|---|
예외 처리(Exception Handling) (0) | 2020.09.01 |
문자 집합 (Character Set) (0) | 2020.08.31 |
Java의 주요 클래스(2) (0) | 2020.08.27 |
Java의 주요 클래스(1) (0) | 2020.08.26 |