Language/JAVA

열네번째날 [기본 API 클래스(3) - 포장(Wrapper) 클래스 / Math 클래스 / Random 클래스 / Date 클래스 / Calendar 클래스]

구일일구 2022. 8. 10. 18:58
반응형

목차 

1. 포장 클래스 

2. Math, Random 클래스

3. Date, Calendar 클래스


포장(Wrapper) 클래스

* 포장(Wrapper) 객체 : 기본 타입(byte, char, short, int, long, float, double, boolean) 값을 갖는 객체 

* 기본 타입 값을 내부에 두고 포장하는 객체

* 특징 : 포장하고 있는 기본 타입의 값은 외부에서 변경 불가 ➡️ 변경 원하면, 새로운 포장 객체 만들어야 함

 

* 포장 클래스 : java.lang 패키지에 포함되어 있고, 다음과 같이 기본 타입에 대응되는 클래스가 있음

 

박싱(Boxing)과 언박싱(Unboxing)

* 박싱(Boxing) : 기본 타입의 값을 포장 객체로 만드는 과정

* 언박싱(Unboxing): 포장 객체에서 기본 타입의 값을 얻어내는 과정 

 

* 박싱 하는 방법

- 생성자 이용 : 포장 클래스의 생성자 매개값으로 기본 타입 or 문자열 넘겨주면 됨 

 

- valueOf() 메소드 이용

Integer obj = Integer.valueOf(1000);
Integer obj = Integer.valueOf("1000");

 

* 언박싱 하는 법

- 각 포장 클래스마다 가지고 있는 클래스 호출

- 기본 타입명 + Value()

 

자동 박싱과 언박싱

* 자동 박싱 : 포장 클래스 타입에 기본값이 대입될 경우 발생 (ex. Integer 객체를 int 타입 변수에 대입)

Integer obj = 100;

 

* 자동 언박싱 : 기본 타입에 포장 객체가 대입될 경우 발생 (ex. Integer 객체가 int 타입으로 자동 언박싱됨)

int value1 = obj;
int value2 = obj + 100;
</>
value1 = 100;
value2 = 200;

 

문자열을 기본 타입 값으로 변환

*parse + 기본 타입 명 : 정적 메소드

 

 포장값 비교

* ==와 != 연산자를 사용할 수 없음 : 포장 객체의 참조를 비교하기 때문(주소 비교)

Integer obj1 = 300;
Integer obj2 = 300;
System.out.println(obj1 == obj2);
</>
false

 

*박싱된 값이 다음 표에 나와 있는 값이라면 ==와 != 연산자로 내부의 값을 바로 비교할 수 있음 


Math, Random 클래스

Math 클래스

* 수학 계산에 사용할 수 있는 정적 메소드 제공

 

Random 클래스

* 난수를 얻어내기 위한 다양한 메소드 제공 

난수 : 정의된 범위내에서 무작위로 추출된 수

 

* boolean, int, long, float, double 난수를 얻을 수 있음 

- Math.random() 메소드는 0.0 ~ 1 사이 double 난수를 얻는 데에만 사용 가능

 

* 난수를 만드는 알고리즘에 사용되는 종자값(seed) 설정 가능  : 종자값이 같으면 같은 난수 

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

 

* Random 클래스로부터 Random 객체를 생성하는 방법

 

* Random 클래스가 제공하는 메소드


Date, Calendar 클래스

Date 클래스

* 날짜를 표현하는 클래스

* 날짜 정보를 객체 간에 주고 받을 때 주로 사용

Date now = new Date();

 

* 현재 날짜를 문자열로 얻고 싶다면 toString() 메소드 사용

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

 

 

* 현재 날짜를 특정 문자열 포맷으로 얻고 싶다면 simpleDateFormat 클래스로 이용

SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss초);
String str2 = sdf.format(now)

 

Calendar 클래스 

* 달력을 표현한 추상 클래스 : new 연산자로 인스턴스 생성X

- 날짜와 시간을 계산하는 방법이 지역, 문화, 나라에 따라 다르기 때문 

- Calendar 클래스에는 날짜와 시간을 계산하는 필요한 메소드들만 선언 : 특정 계산 로직은 하위 클래스에서 구현하도록 되어 있음

 

* 현재 OS에 설정되어 있는 시간대(TimeZone)를 기준으로 한 객체 얻기

Calendar now = Calendar.getInstance();

 

* 다른 시간대의 Calendar 객체 얻기

- Calendar 클래스의 오버로딩된 다른 getInstance() 메소드를 이용

- 알고 싶은 시간대의 java.util.TimeZon 객체를 얻어, Calendar.getInstance() 메소드의 매개값으로 넘겨 줌

TimeZon timeZon = Timezon.getTimeZone("America/Los_Angeles");
Calendar now = Calendar.getInstance(timeZon);

 

*날짜 및 시간 정보 얻기

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);
반응형