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