java.util 패키지의 클래스들 

  • StringTokenizer : 문자열을 구분자로 분리하는데 사용되는 클래스
  • Calendar : 운영체제의 날짜와 시간 관련된 기능을 제공하는 클래스
  • Date : 날짜와 시간 관련딘 기능을 제공하는 클래스

 

1 StringTokenizer

String 클래스에서 사용한 spli() 메서드와 동일한 기능
 
메서드
  • int countTokens() : nextToken() 메서드가 호출될 수 있는 횟수를 계산
  • boolean hasMoreTokens() : StringTokenizer 객체에서 token이 있는지 확인
  • Object nextToken() : StringTokenizer 객체에서 token을 얻는다.
 
StringTokenizer 객체 생성 시 내부적으로 포인터가 생성되어 첫 번째 토큰 앞에 위치한다.
  • StringTokenizer 객체 생성시
--->
  2033
  05
  22
  • nextToken() 메서드를 호출하면 포인터 다음의 토큰을 리턴한 후 포인터 이동
--->
  05
  22
 
실행 결과
사과
바나나
수박
참외

2033
05
22
 
 
+) DecimalFormat 클래스
숫자 포맷 형식은 API 문서 참고
DecimalFormat df = new DecimalFormat(”$#,###.#”);
String strNum = df.format(1222333.44); //$1,222,333.4

 

2  Date 클래스 

Calendar 클래스가 나오기 전 시간과 날짜 정보를 얻었지만 지금은 운영체제에서 제공하는 현재시간 정보를 얻는 목적으로 주로 사용
SimpleDateFormat 클래스를 사용하여 원하는 날짜 형식으로 출력
SimpleDateFormat() dateForm = new SimpleDateFormat(pattern);
dataForm.format(new Date());
 
메서드
  • long getTime() : Date 객체의 시간을 리턴
  • void setTime() : Date 객체의 시간을 매개값으로 받은 시간으로 변경
 
날짜 형식(pattern) : 더 많은 형식은 API 문서 참고
import java.text.SimpleDateFormat;
  • ‘yyyy.MM.dd G ‘at’ HH:mm:ss z” :  2001.07.04 AD at 12:08:56 PDT
  • “EEE, MMM d, “yy” :  Wed, Jul 4, ‘01
  • “h:mm a” : 12:08 PM
  • “yyyyy.MMMMM.dd GGG hh:mm aaa” : 02001.July.04 AD 12:08 PM
 
헷갈리는 문자, 소문자 vs 대문자
패턴 의미 설명
M vs m 월 vs 분 M은 Month, m은 minute
H vs h 24시간 vs 12시간 H: 13, h: 1 (1시)
a AM/PM 오전/오후 구분
z 시간대(TimeZone) 예: KST, GMT
‘  ‘   문자 그대로 출력
G 연호(Era) : AD,BC Gregorian
 
실행 결과
25. 6. 15. 오전 3:33
2025. 06.15
УУУУ
06
15
2025년 06월 15일
03시 33분 21초

 

 

3 Calendar 클래스 

Date 클래스의 단점 보완
시간과 날짜 정보를 얻거나 특정 나라의 특정 지역별(TimeZone) 시간 정보를 얻을 때 Calendar 클래스 이용
추상 클래스로 정의되어 있으므로 객체를 얻을 때는 getInstance() 정적 메서드를 호출해서 얻는다.
Calendar cal = Calendar.getInstance();
 
상수
  • AM : AM(오전) 표시 여부 설정
  • AM_PM : AM(오전), PM(오후) 표시 여부 설정
  • DATE : 달(Month)에서의 날짜(day)
  • HOUR_OF_DAY : 하루(Day) 기준의 시간
  • DAY_OF_WEEK : 주(Week)에서의 요일
  • DAY_OF_YEAR : 연(Year)을 기준으로 지난 일수
  • HOUR : 오전 또는 오후 기준에서 지난 시간
 
get() 메서드 호출 시 각각의 상수를 매개값으로 전달해서 날짜와 시간 정보를 얻는다.
Calendar 클래스에서 1월(month)은 0부터 시작하므로 1을 더해서 출력해야 한다.
실행결과
현재 날짜 : 2025년 6월 15일
현재 시간 : 4시 17분 43초
오늘의 요일: 일요일
 
+)자바에선 기존의 Date 클래스와 Calendar 클래스의 단점을 보완하기 위해 java.time 패키지의 LocalDate, LocalTime, LocalDateTime 클래스를 제공
 

 


참조 타입 배열과 객체를 리턴하는 메서드 

 

참조 타입 배열

기본 타입 배열에는 기본 타입 데이터가 저장됐다.
참조 타입 배열에는 클래스의 객체가 저장된다.
 
Product 클래스 타입으로 배열을 선언하면 Product 클래스 객체만 저장할 수 있다.

 
실행 결과
배열에 저장한 제품 정보 출력
---------------------------
제품 번호: 0001
제품 이름: 스마트폰
제품 색상: 블랙
제품 수량: 100

제품 번호: 0002
제품 이름: 스마트 TV
제품 색상: 흰색
제품 수량: 200

제품 번호: 0003
제품 이름: 노트북
제품 색상: 은색
제품 수량: 100
 

메서드 매개변수로 참조 타입 배열 사용

Product 클래스 타입 배열이 메서드의 매개변수로 사용되는 예제
 

Object 클래스 타입 배열

모든 클래스의 최상위 클래스인 Object 클래스는 모든 클래스 객체를 업캐스팅으로 받을 수 있다.
다시 Object 타입 배열에 접근해서 클래스 객체를 얻으려면 각각의 하위 클래스 타입으로 다운캐스팅해야 한다.
(타입이 다른 클래스로 다운캐스팅 할 시 ClassCastException 예외 발생)

 
실행 결과
Object 배열에 저장한 정보 출력
-----------------------------
홍길동

제품 번호: 0001
제품 이름: 스마트폰
제품 색상: 블랙
제품 수량: 100

제품 번호: 0002
제품 이름: 스마트 TV
제품 색상: 흰색
제품 수량: 200

제품 번호: 0003
제품 이름: 노트북
제품 색상: 은색
제품 수량: 100

123

 

 

 

 

객체를 리턴하는 메서드 

메서드는 호출한 곳으로 한 개의 값만 리턴한다. 여러 개의 값을 리턴하고 싶다면 클래스 객체의 각각의 필드에 값을 세팅해서 리턴하면 된다.
예제)
실행클래스
실행 결과
이순신의 시험 점수
국어: 80, 영어: 90, 총점: 170
홍길동의 시험 점수
국어: 70, 영어: 83, 총점: 153
 

 


열거 타입 

열거 타입 정의 : 여러 개의 상수들을 모아서 만든 객체
  • 여러 상수를 편리하게 관리
  • ordinal() 메서드를 이용해서 상수 순서(index)를 얻을 수 있다.
  • 상수 인덱스는 0부터 시작
 
열거타입 선언 : ,(콤마)로 구분
접근제한자 enum 열거타입명 {
 상수명1, 상수명2, 상수면3, …
}
열거 타입 사용
열거타입명 변수 = 열거타입명.상수명
 
Day 예제)
public enum Day {
	SUN, MON, TUE, WED, THU, FRI, SAT	//나열한 순서대로 인덱스 저장, 첫 번

}
실행 클래스
public class DayTest {
	//public static final String SUN = "sun";	//상수가 많을 경우 불편하다
	
	public static void main(String[] args) {
		System.out.println(Day.SUN);
		System.out.println(Day.SUN.ordinal());	//상수의 index
		System.out.println(Day.MON.ordinal());
		
		Day day = Day.WED;	//Day 열거 타입 변수를 선언
		System.out.println(day.name());// name 메서드로 상수명 얻기
		
		switch(day) {
			case SUN:
				System.out.println("일요일");
				break;
			case MON:
				System.out.println("월요일");
				break;
			case TUE:
				System.out.println("화요일");
				break;
			case WED:
				System.out.println("수요일");
				break;
			case THU:
				System.out.println("목요일");
				break;
			case FRI:
				System.out.println("금요일");
				break;
			case SAT:
				System.out.println("토요일");
				break;
		}
	}

}
 
+) 스레드 상태를 열거 타입에 선언한 후 스레드 상태를 출력하는 코드
자바에서는 스레드 상태도 열거 타입으로 제공된다.
public enum ThreadState { NEW, RUNNABLE, WAITING, TIMED_WAITING, BLOCKED, TERMINATED}
 

+ Recent posts