[자바] java.util 패키지

Gammi·2022년 11월 24일
0

JAVA

목록 보기
29/35

📚 java.util 패키지


  • 다양한 기능 제공하는 유틸리티 클래스 모음

  • 난수 생성, 날짜 및 시각 관리, 자료구조 ···





📕 Random 클래스


  • 난수 발생 기능 전용 클래스

  • static 메서드가 아닌 일반 메서드 형태로 제공되므로 인스턴스 생성 필수

  • 정수뿐만 아니라 다양한 타입의 난수 제공

    -> nextXXX() 메서드 호출하여 기본 데이터타입 난수 발생


import java.util.Random; // import 필수!

public static void main(String[] args) {
  Random r = new Random(); // 인스턴스 생성 필수!
  
  for(int i = 0; i <= 10; i++) {
    System.out.println(r.nextInt());
    // int형 범위 난수 발생(-21억 ~ 21억)
    System.out.println(r.nextInt(10));
    // 파라미터에 정수 줄 경우 0 ~ n-1 범위의 난수 발생
    System.out.println(r.nextInt(10) + 1);
    // n값까지의 난수 발생 위해서는 +1 필요
    System.out.println(r.nextDouble());
    // double형 범위 난수 발생
    System.out.println(r.nextBoolean());
    // boolean형 난수 발생
    // true 또는 false 값 리턴
  }
}

🔗 참고

< 난수 발생 방법 >

  1. Math.random() 메서드 통해 double 타입 난수 발생
  2. Random 클래스 인스턴스 생성 후 nextXXX() 메서드 통해 각 타입에 대한 난수 발생





📕 Date 클래스


  • 날짜 및 시각 관련 기능 제공 클래스

  • 대부분의 생성자 및 메서드가 deprecate 처리되어 있음

    -> 다양한 API들이 여전히 Date 타입 사용하는 경우 많음

  • toString() 메서드 오버라이딩 되어있음

    -> 날짜 및 시각 정보 쉽게 출력 가능

  • getTime() 호출하면 해당 객체의 날짜 정보가 long 타입으로 리턴됨

    -> 두 개의 Date 객체의 getTime() 결과를 연산하면 두 날짜 간의 차이 계산 가능

    • 목표 날짜 - 현재 날짜 > 0 : 남은 일 수(미래)
    • 목표 날짜 - 현재 날짜 < 0 : 지난 일 수(과거)

import java.util.Date;

public static void main(String[] args) {
  Date d1 = new Date();
  System.out.println(d1);
  // toString() 메서드 생략되어 있음(출력문에는 생략 가능)
  // 파라미터에 아무 값도 전달 안하면 현재 날짜, 시각 출력됨
  
  Date d2 = new Date(0);
  System.out.println(d2);
  // 1970년 1월 1일 9시 기준 설정
  
  d2 = new Date(2000000000000L);
  // 파라미터에 long 타입 값 전달하면
  // 기준 시각으로부터 지정된 밀리초만큼 지난 시각으로 설정됨!
}

⭐ D-Day 계산기

long differentDate = d2.getTime() - d1.getTime();

if(differentDate > 0 ) {
  System.out.println(differentDate / 1000 / 60 / 60 / 24 + "일 남았습니다");
} else if(differentDate < 0 ) {
  System.out.println(differentDate / 1000 / 60 / 60 / 24 + "일 지났습니다");
} else {
  System.out.println("오늘입니다!");
}





📕 Calender 클래스


  • 주로 날짜 및 시각 조작하는 용도의 클래스

    -> 날짜 및 시각 표현도 가능함

  • 추상클래스이므로 인스턴스 생성없이 제공되는 인스턴스를 static 메서드인 getInstance() 메서드로 리턴받아 사용

  • get() 메서드로 날짜 및 시각 정보 조회

    -> 파라미터로 Calendar.XXX 상수 통해 가져올 정보의 종류 지정

  • set() 메서드로 날짜 맟 시각 정보 설정

    -> 파라미터로 날짜 및 시각 설정 위한 상수 사용


import java.util.Calender;

pulbic static void main(String[] args) {
  Calendar cal = Calendar.getInstance();
  // Calender는 인스턴스 생성 불가능
  System.out.println(cal);
  // toString() 메서드가 오버라이딩 되어 있기는 한데
  // 출력해서보면 식별이 어려움
  
  int year = cal.get(Calendar.YEAR);
  int month = cal.get(Calendar.MONTH) +1;
  // 0 ~ 11의 숫자를 사용하기 때문에 +1을 해줘야 원하는 달 출력 가능
  int day = cal.get(Calendar.DAY_OF_MONTH);
  System.out.println(year + "/" + month + "/" + day);
		
  int hour = cal.get(Calendar.HOUR_OF_DAY); // 24시간제(Hour : 12시간제)
  int min = cal.get(Calendar.MINUTE);
  int sec = cal.get(Calendar.SECOND);
  System.out.println(hour + ":" + min + ":" + sec);
}

  1. Date <-> Calendar 상호 변환
  • Calendar 객체의 getTime() 메서드 호출하여 Date 타입 리턴

Date date = cal.getTime();
System.out.println(date);
// 현재 날짜와 시각 정보 리턴됨



  1. Date -> Calendar로 변환 시
  • Calendar 객체가 존재한느 상태에서 setTime() 메서드 호출하여 Date 타입 객체 파라미터로 전달

Calendar cal2 = Calendar.getInstance();
cal2.setTime(date);
cal2.set(2003, 05, 23);
// set() 메서드 사용해서 날짜 및 시각 정보 설정
// 연, 월, 일 직접 전달
// 월은 0~11 값을 리턴하므로 설정 시에는 -1 필요!
// 따라서 2003년 6월 23일이 출력됨

cal2.set(Calendar.YEAR, 2002);
cal2.set(Calendar.MONTH, 8 - 1);
// 각 항목을 별도로 변경할때는 set(int filed, int value) 메서드 사용
// get() 메서드와 마찬가지로 Calendar.XXX 상수 사용
Date date2 = cal2.getTime();
System.out.println(date2);
profile
개발자가 되었어요⭐️

0개의 댓글