java.util은 java에서 기본적으로 제공되는 클래스들을 모음 패키지이다. 컬렉션의 클래스들이 대부분을 차지하고 있다.
Math 클래스
java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있다.'
Math 클래스가 제공하는 메소드는 모두 정적 메소드이므로 Math 클래스로 바로 사용이 가능하다.
수학 관련 클래스로, 생성자가 없고 두개의 상수와 메소드들로 이루어짐
모든 메소드들은 정적 메소드로 인스턴스 생성없이 사용할 수 있음

java.util.Random 클래스
java.util 패키지에 있는 Random 클래스는 임의의 수를 생성할 때 유용
생성자
Random() : 임의의 값을 생성할 수 있는 인스턴스 생성함
Random(long seed) : seed 값으로 임의의 값을 생성할 수 있는 인스턴스를 생성함.
wrapper클래스
-기본 자료형을 객체로 변환해야 하는 경우에 이용
-기본 자료형 각각에 대응하는 클래스들을 통틀어서 wrapper라 칭함

자바는 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체를 생성할 수 있따.
이런 객체를 포장 객체라고 하는데, 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문이다.
포장 객체의 특징은 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없다는 점이다. 만약 내부의 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다.
포장 객체는 주로 컬렉션 프레임워크에서 기본 타입 값을 객체로 생성해서 관리할 때 사용된다.
포장 객체의 설계도인 포장 클래스는 java.lang 패키지에 포함되어 있는데, 다음과 같이 기본 타입에 대응되는 클래스들이 있다.
포장 클래스의 주요 용도는 기본 타입의 값을 박싱해서 포장 객체로 만드는 것이지만, 문자열을 기본 타입 값으로 변환할 때에도 많이 사용된다.
대부분의 포장 클래스에는 'pares+기본타입 이름'으로 저장되어 있는 정적 메소드가 있다.
정적 메소드는 문자열을 매개값으로 받아 기본 타입 값으로 변환한다.
박싱은 기본 데이터를 인스턴스로 변환하는 것을 의미
언박싱은 인스턴스로 된 데이터를 기본 데이터형으로 변환하는것
*기본 타입의 값을 포장 객체로 만드는 과정을 박싱이라 하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱이라 한다.
기본형 변수도 때로는 객체로 다루어져야 하는 경우가 있다.
1. 매개변수로 객체가 요구될 때
2. 기본형 값이 아닌 객체로 저장해야 할 때
3. 객체간의 비교가 필요할 때
4. 제네릭 타입에서 기본타입을 받지 않기 때문에 래퍼 클래스를 이용하여 제네릭을 사용해야 한다.
=>이 때 사용되는 것이 wrapper class이다. 기본형 데이터를 객체로 감싸서 객체로 사용할 수 있도록 하여 wrapper 클래스라는 이름을 가진다.
생성자를 이용하지 않아도 다음과 같이 각 포장 클래스마다 가지고 있는 정적 valueOf() 메소드를 사용할 수도 있다.
박싱된 포장 객체에서 다시 기본 타입의 값을 얻어내기 위해서는(언박싱하기 위해서는) 각 포장 클래스마다 가지고 있는 '기본 타입 이름+Value()' 메소드를 호출하면 된다.
기본 타입 값을 직접 박싱, 언박싱하지 않아도 자동적으로 박싱과 언박싱이 일어나는 경우가 있다.
자동 박싱은 포장 클래스 타입에 기본값이 대입될 경우에 발생한다.
자동 언박싱은 기본 타입에 포장 객체가 대입되는 경우와 연산에서 발생한다.
JDK1.5 전까지는 명시적인 박싱과 언박싱을 사용했었다. 하지만 JDK1.5이후부터는 오토박싱과 오토언박싱이 지원되기 시작하였다. 이 때문에 자유롭게 기본형과 wrapper클래스 사이를 오갈 수 있게 되었다.
자동 언박싱 : Integer객체와 int 타입삾을 연산하면 Integer객체로부터 int타입의 값이 자동 언박싱되어 연산된다.
문자열을 기본 타입 값으로 변환할 때에도 포장 클래스를 많이 사용한다. 대부분의 포장 클래스에는 parse+기본타입 명으로 되어있는 정적 메소드가 있어서 문자열을 매개값으로 받아 기본 타입 값으로 변경한다.
java.util 패키지는 프로그램 개발에서 자주 사용되는 자료구조일 뿐만 아니라, 날짜 정보를 제공해주는 유용한 API를 포함하고 있다.
Date 클래스는 특정 시점의 날짜를 표현하는 클래스이다. Date 객체 안에는 특정 시점의 연도, 월, 일, 시간 정보가 저장된다.
Calendar 클래스는 달력을 표현한 클래스이다. 해당 운영체제의 Calendar 객체를 얻으면, 연도, 월, 일, 요일, 오전/오후, 시간 등의 정보를 얻을 수 있다.
Date 클래스는 날짜를 표현하는 클래스로 Date 객체 간에 날짜 정보를 주고받을 때 매개 변수나 리턴 타입으로 주로 사용된다.
Date 객체의 toString() 메소드는 영문으로 된 날짜를 리턴하기 때문에 원하는 날짜 형식의 문자열을 얻고 싶다면 javatext 패키지의 SimpleDateFormat 클래스와 함께 사용하는 것이 좋다.
Date클래스에는 여러 생성자가 선언되어 있지만 대부분 deprecated(사라질 예정)되어 현재는 Date() 생성자만 주로 사용한다. Date() 생성자는 컴퓨터의 현재 날짜를 읽어 객체로 만든다.
Calendar 클래스는 달력을 표현한 클래스로 추상 클래스이므로 new연산자를 사용해서 인스턴스를 생성할 수 없다.
Calendar 클래스의 정적 메소드인 getInstance() 메소드를 이용하여 현재 운영체제에 설정되어 있는 시간대를 기준으로 Calendar 하위 객체를 얻을 수 있다.

get()메소드를 호출할 때 사용한 매개값은 모두 Calendar클래스에 선언되어 있는 상수들이다.
'Java > information' 카테고리의 다른 글
[자바/JAVA] 보조 스트림 (0) | 2023.05.30 |
---|---|
[자바/JAVA] Stream (0) | 2023.05.25 |
[자바/JAVA] API와 String 메소드들 (0) | 2023.05.19 |
[자바/JAVA] 예외 클래스 (0) | 2023.05.17 |
[자바/JAVA] 익명 객체 (0) | 2023.05.15 |