프로그래밍/java

[JAVA] Math, Calendar 클래스

승민아 2022. 5. 22. 19:48

Math 클래스

  • 기본 연산 메소드를 제공한다.
  • 모든 메소드는 static으로 선언되어 있어 클래스 이름으로 호출한다.
  • 각 메소드마다 오버로딩이 되어있어 인자 종류별로 실행하는 함수가 다름

 

Math 주요 메소드 사용 예제

public class Hongong {

    public static void main(String args[]){

       double a = Math.PI;
       System.out.println(Math.PI);
       System.out.println(Math.ceil(a)); // (ceil : 올림)
       System.out.println(Math.floor(a)); // floor : 내림
       System.out.println(Math.sqrt(9)); // sqrt : 제곱근
        System.out.println(Math.exp(2)); // exp : e의 2승
        System.out.println(Math.round(3.14)); // 반올림

        System.out.println();
        // [1,45] 사이의 랜덤 정수형 난수 5개 출력
        for(int i=0;i<5;i++)
            System.out.println((int)(Math.random()*45+1));

    }
}

 

실행 결과

 

Math.random()로 난수 생성

그냥 random()은 0.0<x<1.0의 난수 발생한다.

여기서 1~100까지의 랜덤 정수 10개를 생성해보자.

 

생성 코드

for(int i=0;i<10;i++)
	System.out.println((int)(Math.random()*100+1));

*100만하면 0~99까지의 수가 만들어지고 여기다 +1을 했기에

1~100까지의 수가 만들어지는 것이다.

 

random 클래스의 객체를 생성해서 사용

import java.util.Random;

public class Hongong {

    public static void main(String args[]){
        Random r = new Random();

        int n = r.nextInt(); // 음수,양수,0 포함 정수 범위 난수 생성
        int m = r.nextInt(100); // 0~99사이(0과 99 포함) 정수 난수 생성
        double x = r.nextDouble(); // 0.0~1.0 사이의 실수 난수 생성

        System.out.println(n);
        System.out.println(m);
        System.out.println(x);


    }
}

 

실행 결과

 

 

Calendar 클래스

  • public abstract class Calendar : 생성할 수 없음.
  • 시간, 날짜 정보가 대부분 static field이다.
  • ex, public static final int YEAR = 1;

 

Calendar 객체 생성

Calendar now = Calendar.getInstance();

-> Calendar.getInstance()는 현재 날짜와 시간 정보를 가진 Calendar 생성

-> Calendar는 추상 클래스라 new Calendar() 안 함.

 

날짜와 시간 알아내기

import java.util.Calendar;
import java.util.Random;

public class Hongong {

    public static void main(String args[]){
        Calendar now = Calendar.getInstance();

        int year = now.get(Calendar.YEAR);
        int mount = now.get(Calendar.MONTH)+1;
        int minute = now.get(Calendar.MINUTE);
        int second = now.get(Calendar.SECOND);


        System.out.println(year + "/"+mount+"/"+minute+"/"+second);
    }
}

 

필드

  • YEAR : 년도
  • MONTH : 달(0~11)
  • HOUR : 시간(0~11)
  • HOUR_OF_DAY : 24시간을 기준으로 현 시간
  • SECOND : 초
  • DAY_OF_MOUNTH : 현재 달의 날짜
  • DAY_OF_WEEK : 현재 주의 요일(일요일:1, 토요일:7)
  • AP_PM : 오전인지 오후인지
  • MINUTE : 분
  • MILLISECOND : 밀리초