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}
'멀티캠퍼스-JAVA 풀스택 > JAVA' 카테고리의 다른 글
| Java 기초(11) - 예외처리 (0) | 2025.12.31 |
|---|---|
| Java 기초(9)-필수 사용 클래스(String과 그 외) (0) | 2025.12.12 |
| Java 기초(8)-필수 사용 클래스 (0) | 2025.12.04 |
| Java 기초(7) - 인터페이스 (0) | 2025.11.25 |
| Java 기초(6)- 객체지향(2) (0) | 2025.11.18 |