본문 바로가기
공부방/자바프로그래밍

자바 유용한 클래스들 – Math, Calendar, Arrays, Random 클래스

by 오후 네시 2020. 11. 2.




1. Math 클래스

-수학 계산 할 때 쓸 수 있는 변수와 메소드로 구성됨


절대값 Math.abs(-2)

버림   Math.floor(3.15)

반올림 Math.round(8.2)

올림   Math.ceil(3.1)

제곱근 Math.sqrt(100)

큰값   Math.max(10,20)

작은값 Math.min(10,20)

원주율 Math.PI

제곱   Math.pow(10,3)

난수   Math.random()


1) Math 클래스는 final 이라서 상속 금지, 오버라이딩 금지임.


2) Math 클래스의 생성자는 private 타입이라서 외부에서 접근 불가함.

따라서 new 생성자를 통한 객체생성 불가함.

대신

static이 붙은 메소드를 많이 만들어 놓았기 때문에 외부에서 객체생성 없이 바로 쓸 수 있는 메소드가 많다.



2. Calendar 클래스

-날짜 계산할 때 씀

-java.util.Calendar를 import해야 함


1) new로 객체 생성하면 에러가 난다.

아래와 같이 해야 함

Calendar cal = Calendar.getInstance();

왜냐하면

Calendar가 추상클래스이기 때문임.


2) 각종 메소드

cal은 Calendar 타입의 객체참조변수임.


cal.get(Calendar.YEAR); //연도

cal.get(Calendar.MONTH); //월 0~11 +1을 해야 함.

cal.get(Calendar.DATE); //날짜

cal.get(Calendar.HOUR); //시간(12시간제)

cal.get(Calendar.HOUR_OF_DAY);//시간(24시간제)

cal.get(Calendar.MINUTE); //분

cal.get(Calendar.SECOND); //초

cal.get(Calendar.AM_PM); //오전(0), 오후(1)

cal.get(Calendar.DAY_OF_YEAR); //1년 중 몇 번째 날?

cal.get(Calendar.DAY_OF_MONTH); //월의 몇 번째 날?

cal.get(Calendar.DAY_OF_WEEK); //요일코드(일요일1 ~ 토요일 7)

cal.get(Calendar. WEEK_OF_YEAR); //1년 중 몇 번째 주?


Date 클래스는 오래된 클래스라서 Calendar클래스를 쓰는 것이 좋다.


3) Date 클래스

- java.util.Date를 import 해야 함


Date date=cal.getTime();

date.getYear(); // +1900을 더해야 원하는 년도를 얻을 수 있다.

date.getMonth(); //0~11월. +1을 해야 함

기타 등등 많지만 쓰지 마라.


4) 윤년

-윤년 : 4의 배수이고 100의 배수가 아닌 해 또는 400의 배수인 해


-자바가 지원하는 윤년 메소드

GregorianCalendar gregori = new GregorianCalendar();

int y = 2000;

    if (gregori.isLeapYear(y))

      System.out.println("윤년입니다.");

    else

      System.out.println("평년입니다.");



3. Arrays(배열)

- 메소드 이용시 java.util.Arrays import해야 함.

- 동일한 자료형을 쓴다 : Object 배열은 가급적 안쓴다. 내부적으로 계속 형변환을 하기 때문에 연산비용이 많이 들기 때문이다.

- 배열 사이즈는 고정.

- 배열 인덱스는 0부터.


1) 선언 방법


자료형[] 배열참조변수;

배열참조변수 = new 자료형[사이즈];

ex)

int[] num1;

num1=new int[5];


이것을 한 줄로 줄이면

int[] num1=new int[5];


그리고 해당 배열에 값을 넣으면 된다.

num1[0] = 10;

num1[1] = 20;

num1[2] = 30;

num1[3] = 40;

num1[4] = 50;


2) 선언할 때 바로 배열초기화 하려면

int[] num1={10,20,30,40,50};


3) 배열의 값 비교할 때

- 반복문을 이용해서 하나 하나의 값을 비교하는 방법이 있고,

- 반복문 사용 없이 Arrarys.equals(배열1, 배열2) 메소드를 이용하는 방법이 있다.


4) 배열의 길이 -> num1.length


5) 배열 내부의 값 정렬


Arrays.sort(num1); //오름차순 정렬임


Array 클래스에는 내림차순 정렬 메소드가 없다.

그래서 아래와 같이 한다.


List<int[]> list=Arrays.asList(num1); 

Collections.reverse(list); //나온 것을 뒤집음


int[] num2=list.get(0);

for(int i=0; i< num2.length; i++){

  System.out.println(num2[i]+”\t”);

}



4. Random 클래스

- java.util.Random import 해야 함.

- Random 클래스를 쓰는 방법이 있고, 

- Math.random() 을 쓰는 방법이 있다.


Math.random() –0.0에서 1.0 사이의 값이 나온다. 이것을 약간 가공해야 한다.

Random 클래스는 범위 지정이 가능하다.


1) Random 클래스 사용방법


Rando r=new Random();

//정수 범위 내에서 선택

System.out.println(r.nextInt());


//nextInt(n) :0~n-1 범위 내에서 선택

System.out.println(r.nextInt(100)); //0~99


//100~200

System.out.println(r.nextInt(101)+100);


//true, false

System.out.println(r.nextBoolean());

//실수형 난수

System.out.println(r.nextDouble());

System.out.println(r.nextlong());


2) Math.random() 사용방법

-new 생성자 없이 바로 사용함.

-import할 필요 없음.

-0.0에서 1.0 사이의 값이 나옴 : 재가공 필요함.


System.out.println(Math.random());


//0~100사이의 정수형 난수값이 나온다.

System.out.println((int)(Math.random() * 100));




댓글