Programming/Java
[Java 자바] 11. 기본 API 클래스 ⑧ Wrapper(포장), Math, Random 클래스
erinh
2022. 9. 4. 22:34
반응형
11-9. Wrapper(포장) 클래스
- 포장 객체: 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체
- 포장하고 있는 기본 타입 값은 외부에서 변경 불가
기본 타입 | 포장 클래스 |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
11-9-1. 박싱(Boxing)과 언박싱(Unboxing)
- Boxing: 기본 타입의 값을 포장 객체로 만드는 과정 (기본타입의 값이나 문자열을 넘겨주면 됨)
(1) 생성자 new 를 사용하여 생성
(2) value of를 사용하여 생성
- Unboxing: 포장 객체에서 기본 타입의 값을 얻어내는 과정
// Boxing
Integer obj1 = new Integer(100);
Integer obj2 = new Integer("200");
Integer obj3 = Integer.valueOf("300");
// Unboxing
int value1 = obj1.intValue();
int value2 = obj2.intValue();
int value3 = obj3.intValue();
11-9-2. 자동 박싱과 언박싱
- 자동 박싱: 포장 클래스 타입에 기본값이 대입될 경우 발생
- 자동 언박싱: 기본 타입에 포장 객체가 대입될 경우 발생
// 자동 박싱
Integer obj = 100;
// 자동 언박싱
int value = obj;
// 컬랙션 객체에 기본값 저장시 자동 박싱
List<Integer> list = new ArrayList<>();
list.add(200); // 자동 박싱
11-9-3. 문자열을 기본 타입 값으로 변환
- parse+기본타입 명으로 되어 있는 정적 메소드를 활용해 문자열을 기본타입값으로 변환
int value1 = Integer.parseInt("10");
double value2 = Double.parseDouble("3.14");
11-9-4. 포장 값 비교
- 포장 객체는 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없음 (포장 객체의 참조를 비교하기 때문)
- 내부의 값만 비교하기 위해선 언박싱한 값을 얻어 비교하거나 equals() 메소드로 내부 값을 비교해야 함
- 포장클래스의 equals() 메소드는 내부의 값을 비교하도록 오버라이딩 되어 있음
Integer obj1 = 300;
Integer obj2 = 300;
System.out.println(obj1 == obj2); // false
System.out.println(obj1.intValue() == obj2.intValue()); // true
System.out.println(obj1.equals(obj2)); // true
11-10. Math, Random 클래스
11-10-1. Math 클래스
메소드 | 설명 | 예제 코드 | 리턴값 |
int abs(int a) double abs(double a) |
절대값 | int v1 = Math.abs(-1); double v2 = Math.abs(-3.14); |
v1 = 1, v2 = 3.14 |
double ceil(double a) | 올림값 | double v3 = Math.ceil(1.3); double v4 = Math.ceil(-1.7); |
v3 = 2, v4 = -1 |
double floor(double a) | 내림값 | double v5 = Math.floor(1.3); double v6 = Math.floor(-1.7); |
v5 = 1, v6 = -2 |
int max(int a, int b) | 최대값 | int v7 = Math.max(-2, 3); | v7 = 3 |
int min(int a, int b) | 최소값 | int v8 = Math.min(-2, 3); | v8 = -2 |
double random() | 랜덤값 | double v9 = Math.random(); | 0.0 <= v9 < 1.0 |
double rint(double a) | 가까운 정수의 실수값 | double v10 = Math.rint(5.3); double v11 = Math.rint(5.7); |
v10 = 5.0 v11 = 6.0 |
long round(double a) | 반올림 값 | long v12 = Math.round(5.3); long v13 = Math.round(5.7); |
v12 = 5 v13 = 6 |
11-10-2. Random 클래스
- Math.random() 메소드는 0.0 에서 1 사이의 double 난수를 얻는 데만 사용
- Random클래스는 boolean, int, long, float, double 난수를 얻을 수 있음
생성자 | 설명 |
Random() | 호출 시마다 다른 종자값(현재시간 이용)이 자동 설정 |
Random(long seed) | 매개값으로 주어진 종자값 설정 |
- Random 클래스가 제공하는 메소드
리턴값 | 메소드(매개 변수) | 설명 |
boolean | nextBoolean() | boolean 타입의 난수를 리턴 |
double | nextDouble() | double 타입의 난수를 리턴(0.0 <= ~ < 1.0) |
int | nextInt() | int 타입의 난수를 리턴 (int 전체 범위 내) |
int | nextInt(int n) | int 타입의 난수를 리턴 (0 <= ~ < n) |
반응형