본문 바로가기
Java/이것이 자바다

기본 API 클래스 (3)

by k-mozzi 2023. 4. 15.
반응형
Preface

 

이번 장을 끝으로 이자바 1권 개념 공부를 모두 마쳤다.

 

마지막 부분 역시 다양한 메소드와 관련된 내용이라 한 번 훑어보는 식으로 넘어갔다.

 

java.time 패키지의 시간 조작 및 계산 관련 메소드들은 굳이 익힐 필요가 없을 것 같아 따로 정리 하지는 않았다.

 

워낙 내용이 많았던 파트라 확인 문제를 풀어본 후 업로드했던 글들을 다시 한 번 읽어봐야 할 것 같다.


 

12. Math, Random 클래스

 

 

- java.lang.Math 클래스: 수학 계산에 사용할 수 있는 메소드 제공

→ 모두 정적 메소드이므로 Math 클래스로 바로 사용할 수 있다.

 

 

- Math 클래스의 메소드

메소드 설명 예제 코드 리턴값
int abs(int a) 절댓값 int v1 = Math.abs(-5); v1 = 5
double ceil(double a) 올림값 double v2 = Math.ceil(5.4); v2 = 6.0
double floor(double a) 버림값 double v3 = Math.floor(5.4); v3 = 5.0
int max(int a, int b) 최댓값 int v4 = Math.max(5, 9); v4 = 9
int min(int a, int b) 최솟값 int v5 = Math.min(5, 9); v5 = 5
double random( ) 랜덤값: 0.0은 포함, 1.0은 미포함 double v6 = Math.random( ); 0.0 <= v6 < 1.0
double rint(double a) 가까운 정수의 실수값 double v7 = Math.rint(5.3); v7 = 5.0
long round(double a) 반올림값: 항상 소수점 첫째 자리에서 반올림해서 정수값을 리턴한다. long v8 = Math.round(5.3); v8 = 5

 

 

- java.util.Random 클래스: 난수를 얻어내기 위한 다양한 메소드 제공

1) boolean, int, long, float, double 난수를 얻을 수 있다.

2) 종자값(seed)을 설정할 수 있다.

3) 종자값: 난수를 만드는 알고리즘에 사용되는 값으로, 종자값이 같으면 같은 난수를 얻는다.

 

 

- Random 객체 생성 방법

1) Random( ) 생성자: 호출 시마다 다른 종자값이 자동 설정된다.

2) Random(long seed) 생성자: 매개값으로 주어진 종자값이 설정된다.

 

 

- Random 클래스의 메소드

리턴값 메소드 설명
boolean nextBoolean( ) boolean 타입의 난수를 리턴
double nextDouble( ) double 타입의 난수를 리턴(0.0 <= ~ < 1.0)
int nextInt( ) int 타입의 난수를 리턴
int nextInt(int n) int 타입의 난수를 리턴(0 <= ~ < n)
package ch11;

import java.util.Arrays;
import java.util.Random;

public class RandomExample {

	public static void main(String[] args) {

		// 두 Random 객체에 동일한 종자값을 주면 동일한 난수를 얻는다.
		int[] selectNumber = new int[6];
		Random random = new Random();
		System.out.println("선택 번호: ");
		for (int i = 0; i < 6; i++) {
			selectNumber[i] = random.nextInt(45) + 1;
			System.out.print(selectNumber[i] + " ");
		}
		System.out.println();

		int[] winningNumber = new int[6];
		random = new Random();
		System.out.println("당첨 번호: ");
		for (int i = 0; i < 6; i++) {
			winningNumber[i] = random.nextInt(45) + 1;
			System.out.print(winningNumber[i] + " ");
		}
		System.out.println();

		Arrays.sort(selectNumber);
		Arrays.sort(winningNumber);
		boolean result = Arrays.equals(selectNumber, winningNumber);
		System.out.println("당첨 여부: ");
		if (result) {
			System.out.println("true");
		} else {
			System.out.println("false");
		}
	}

}

 


 

13. Date, Calendar 클래스

 

 

- Date 클래스: 날짜를 표현하는 클래스

1) 객체 간에 날짜 정보를 주고 받을 때 주로 사용된다.

2) Date( ) 생성자: 컴퓨터의 현재 날짜를 읽어 Date 객체로 만든다.

Date now = new Date();

 

 

- toString( ) 메소드: 현재 날짜를 영문으로 된 문자열로 리턴한다.

→ java.text.SimpleDateFormat 클래스를 이용하면 특정 문자열 포맷으로 날짜를 얻을 수 있다.

package ch11;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateExample {

	public static void main(String[] args) {

		Date now = new Date();
		String strNow1 = now.toString();
		System.out.println(strNow1);

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss");
		String strNow2 = sdf.format(now);
		System.out.println(strNow2);
	}

}

 

 

- Calendar 클래스: 달력을 표현한 클래스

1) 추상 클래스이므로 new 연산자를 통해 인스턴스를 생성할 수 없다.

2) 특별한 역법을 사용하는 경우가 아니면 getInstace( ) 메소드를 이용해 현재 운영체제의 시간대를 기준으로 한 Calendar 하위 객체를 얻을 수 있다.

Calendar now = new Calendar.getInstance();

 

 

- Calendar 클래스의 get( ) 메소드

메소드: 매개값은 Calendar 클래스에 선언되어 있는 상수 설명
int year = now.get(Calendar.YEAR); 년도를 리턴
int month = now.get(Calendar.MONTH) + 1; 월을 리턴
int day = now.get(Calendar.DAY_OF_MONTH); 일을 리턴
int week = now.get(Calendar.DAY_OF_WEEK); 요일을 리턴
int amPm = now.get(Calendar.AM_PM); 오전/오후를 리턴
int hour = now.get(Calendar.HOUR); 시를 리턴
int minute = now.get(Calendar.MINUTE); 분을 리턴
int second = now.get(Calendar.SECOND); 초를 리턴

 

 

- 다른 시간대에 해당하는 날짜와 시간 출력: Calendar 클래스의 오버로딩된 다른 getInstance( ) 메소드를 이용

1) 알고 싶은 시간대의 java.util.TimeZone 객체를 얻어 Calendar.getInstance( ) 메소드의 매개값으로 넘겨준다.

2) TimeZone.getTimeZone( ) 메소드의 매개값은 TimeZone 클래스의 정적 메소드인 getAvailableIDs( ) 를 호출하여 얻은 시간대 문자열 중 하나를 사용하면 된다.

TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
Calnedar now = Calendar.getInstance(timezone);

 


 

14. Format 클래스

 

 

- DecimalFormat: 숫자 데이터를 원하는 형식으로 표현하기 위한 패턴을 사용

기호 의미 패턴 예 1234567.89 → 변환 결과
0 10진수(빈자리는 0으로 채움) 0
0.0
0000000000.00000
1234568
1234567.9
0001234567.89000
# 10진수(빈자리는 채우지 않음) #
#.#
#######.####
1234568
1234567.9
1234567.89
. 소수점 #.0 1234567.9
- 음수 기호 +#.0
-#.0
+1234567.9
-1234567.9
, 단위 구분 #,###.0 1,234,567.9
E 지수 문자 0.0E0 1.2E6
; 양수와 음수의 패턴을 모두 기술할 경우, 패턴 구분자 +#,###; -#,### +1,234,568(양수)
-1,234,568(음수)
% 100을 곱한 후에 % 문자 붙임 #.#% 123456789 %
\u00A4 통화 기호 \u00A4 #,### ₩ 1,234,568
DecimalFormat df = new DecimalFormat("#,###.0");
String result = df.format(1234567.89);

 

 

- SimpleDateFormat: 날짜를 특정 문자열 포맷으로 얻기 위해 사용

패턴 문자 의미 패턴 문자 의미
y H 시(0~23)
M h 시(1~12)
d K 시(0~11)
D 월 구분이 없는 일(1~365) k 시(1~24)
E 요일 m
a 오전/오후 s
w 년의 몇 번째 주 S 밀리세컨드(1/1000초)
W 월의 몇 번째 주    
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
String strDate = sdf.format(new Date());

 

 

- MessageFormat: 문자열에 데이터가 들어갈 자리를 표시해 두고, 런타임 중 동적으로 데이터를 삽입해 문자열을 완성시킬 때 사용

String message = "회원 ID: {0} \n회원 이름: {1} \n회원 전화: {2}";
String result = MessageFormat.format(message, id, name, tel);

// format() 메소드의 첫 번째 매개값은 매개 변수화된 문자열, 두 번째 이후의 매개값은 인덱스 순서에 맞게 값을 나열

String text = "회원 ID: {0} \n회원 이름: {1} \n회원 전화: {2}";
Object[] arguments = { id, name, tel };
String result = MessageFormat.format(text, arguments);

 


 

15. java.time 패키지

 

 

- 날짜와 시간을 조작하거나 비교하는 기능을 담은 API: java.util 패키지에 없고 별도로 java.time 패키지와 하위 패키지로 제공

1) java.time

2) java.time.chrono

3) java.time.dormat

4) java.time.temporal

5) java.time.zone

 

 

- java.time 패키지에 포함된 클래스

1) LocalDate: 로컬 날짜 클래스

LocalDate currDate = LocalDate.now();
LocalDate targetDate = LocalDate.of(int year, int month, int dayOfMonth);

2) LocalTime: 로컬 시간 클래스

LocalTime currTime = LocalTime.now();
LocalTime targetTime = LocalTime.of(int hour, int minute, int second, int nanoOfSecond);

3) LocalDateTime: 로컬 날짜 및 시간 클래스

LocalDateTime currDateTime = LocalDateTime.now();
LocalDateTime targetTime = LocalDateTime.of(int year, int month, int dayOfMonth,
int hour, int minute, int second, int nanoOfSecond);

4) ZonedDateTIme: 특정 타임존의 날짜와 시간 클래스

5) Instant: 특정 시점의 Time-Stamp 클래스

 

 

- 날짜와 시간 관련 메소드

클래스 리턴 타입 메소드 설명
LocalDate int getYear( )
Month getMonth( ) Month 열거값
int getMonthValue( )
int getDayOfYear 일년의 몇 번째 일
int getDayOfMonth( ) 월의 몇 번째 일
DayOfWeek getDayOfWeek( ) 요일
boolean isLeepYear( ) 윤년 여부
LocalTime int getHour( ) 시간
int getMinute( )
int getSecont( )
int getNano( ) 나노초 리턴

 

 

- 파싱(parsing): 특정 자료에서 원하는 정보만 추출하는 것

 

 

- 포맷팅(formatting): 특정 위치에 특정 값을 삽입하는 것

 

728x90
반응형

'Java > 이것이 자바다' 카테고리의 다른 글

멀티 스레드  (0) 2023.04.21
이자바 11장(기본 API 클래스) 확인문제  (0) 2023.04.15
기본 API 클래스 (2)  (0) 2023.04.14
기본 API 클래스 (1)  (0) 2023.04.13
예외 처리  (0) 2023.03.21

댓글