패키지(2) java.util 의 Random, Arrays, StringTokenizer, Date, Calendar 클래스

Yeppi's 개발 일기·2022년 5월 24일
0

JAVA

목록 보기
23/27
post-thumbnail

1. Random 클래스

랜덤한 정수를 발생시킬 때

1) nextInt()

  • 0부터 매개변수로 받은 숫자사이의 랜덤한 정수를 생성
  • 0~4, 총 다섯개의 정수를 랜덤으로 생성
Random random = new Random();

for (int i = 0; i < 6; i++) {
	int a = random.nextInt(5);
	System.out.println(a);

}	

출력결과

  • 실행할 때마다 결과는 다 다르게 출력
2
1
0
4
4
4


2. Arrays 클래스

배열에 저장된 데이터를 정렬할 때
특정 배열의 데이터를 복사할 때

1) sort()

  • 작은 것부터 순서대로 정렬
  • 중복 값도 포함
int[] scoreList = {77, 55, 0, 99, 98, 0};

Arrays.sort(scoreList);

for (int i : scoreList) {
	System.out.println(i);
}

출력결과

0
0
55
77
98
99


2) copyOf()

  • 길이가 더 긴 새로운 배열 객체를 만들때
  • sort() 예제를 그대로 복사
. . .

System.out.println("==복사==");
int[] copyList = Arrays.copyOf(scoreList, 10); // 10칸 짜리 리스트

for (int j : copyList) {
	System.out.println(j);
}

출력결과

  • 위 예제의 scoreList 값, 총 6개를 복사
  • 10 칸짜리 copyList 를 만들었기에 복사하고 남은 빈 칸은 0 값으로 출력
==복사==
0
0
55
77
98
99
0
0
0
0


3. StringTokenizer 클래스

문자열 자르거나 추출

  • 토큰(Token)
    문자열을 특정 기호 기준으로 분리했을 때, 분리된 각각의 문자열
  • 문자열 자르거나 추출할 때 StringTokenizer 이용
  • 특정 문자열에서 원하는 데이터 추출이 수월함

1) hasMoreTokens()

개념

  • cursor 를 한 칸씩 밑으로 이동시키면서 데이터 읽어들임
  • 읽을 데이터 있다면? true
    읽을 데이터 없다면? false
  • 데이터가 없는 영역 존재
    Before First, Atfer Last

  • 처음 객체 생성 시, 데이터가 없는 영역에 cursor 가 위치
    hasMoreTokens() 호출되는 순간 한 칸 아래로 이동하여 데이터를 읽어들임


📌예시📌

  • StringTokenizer 객체 생성 시 cursor 가 위치
  • tokens.hasMoreTokens() 로 호출 시 데이터 읽어들이기 시작
String stdInfo = "NO=000001&NAME=이예삐&AGE=99&MAJOR=컴퓨터정보공학";

StringTokenizer tokens = new StringTokenizer(stdInfo, "&");	// &를 구분자로 문자열 분리

while(tokens.hasMoreTokens()) {
	String token = tokens.nextToken();
	
	String[] elements = token.split("="); // =를 구분자로 문자열 분리
	System.out.println(elements[0] + "의 데이터 -> " + elements[1]);
}

출력결과

NO의 데이터 -> 000001
NAME의 데이터 -> 이예삐
AGE의 데이터 -> 99
MAJOR의 데이터 -> 컴퓨터정보공학


4. Date 와 Calendar 클래스

🍑Date VS Calendar🍑

Date

  • new 가능
  • 프로그램에서 날짜 데이터를 이용해야 하는 경우

Calendar

  • new 사용 불가
    디폴트생성자가 없거나, 생성자가 private 로 막혀있기 때문
    Calendar.getInstance() 를 사용
  • 정교한 날짜와 시간 정보를 사용하는 경우
    • Date 보다 Calendar 가 훨씬 정교한 정보를 제공

👉 실제 현업에서는 Data 를 훨씬 많이 사용



1) new Date()

System.out.println("Date 사용");
Date date = new Date();
System.out.println(date.toString());

출력결과

Date 사용
Tue May 24 14:00:21 KST 2022


2) Calendar.getInstance()

  • 매우 복잡한 데이터
  • java.text.SimpleDateFormat 클래스를 조합하여 간결하게 표현 가능
System.out.println("Calendar 사용");
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.toString());
System.out.println("");
		
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy년 M월 d일 E요일 HH시 mm분 ss초");
System.out.println(dateFormat.format(calendar.getTime()));

출력결과

Calendar 사용
java.util.GregorianCalendar[time=1653368421576,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=22,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=144,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=0,SECOND=21,MILLISECOND=576,ZONE_OFFSET=32400000,DST_OFFSET=0]

2022년 5월 24일 화요일 14시 05분 47초
profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글