시작하며.
자바 Wrapper 클래스에 대한 이해도를 높여봅시다.
기본 자료형을 위한 클래스.
자바에서 정수를 사용할 때 int 라는 기본형을 사용한다.
하지만 정수를 객체형으로 사용해야 하는 경우가 있다.
매개변수가 객체거나, 반환 값이 객체거나, 항변환을 위해서 등등
이를 위해 자바에서는 기본 자료형처럼 사용할 수 있는 클래스를 제공한다.
이러한 클래스를 기본 자료형을 감쌌다는 의미로 Wrapper 클래스라고 한다.
기본형 | Wrapeer 클래스 |
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float / double | Float / Double |
Integer 클래스.
Integer 클래스는 개체에서 기본 형식 int의 값을 래핑합니다.
Integer 유형의 개체는 int 유형의 단일 필드를 포함합니다.
또한 이 클래스는 int를 String으로 변환하고 String을 int로 변환하는 여러 가지 방법과
int를 처리할 때 유용한 다른 상수 및 메서드를 제공합니다.
이 클래스는 값 기반 클래스입니다.
프로그래머는 인스턴스를 호환 가능한 인스턴스로 취급해야 하며 동기화를 위해 인스턴스를 사용하면 안 됩니다.
그렇지 않으면 예측할 수 없는 동작이 발생할 수 있습니다.
Integer 클래스의 생정자를 보면 다음과 같이 특정 정수를 매개변수로 받는 경우와 문자열을 받는 경우 두 가지가 있고
int 자료형의 특성이 그대로 구현되어 있다.
대부분 Wrapper클래스는 그 Wrapper클래스의 기본형 타입의 정의와 다르지 않다.
private final int value;
// 특정 정수를 매개변수로 받는 경우
public Integer(int value) {
this.value = value;
}
// 특정 문자열을 매개변수로 받는 경우
public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}
/**
* A constant holding the minimum value an {@code int} can
* have, -2<sup>31</sup>.
*/
@Native public static final int MIN_VALUE = 0x80000000;
/**
* A constant holding the maximum value an {@code int} can
* have, 2<sup>31</sup>-1.
*/
@Native public static final int MAX_VALUE = 0x7fffffff;
Integer 클래스의 주요 메서드.
- intValue() : int 자료형 값을 가져오기 위한 메서드
Integer value = new Integer(100);
int myValue = value.intValue();
System.out.println(myValue); // 100
- valueOf() : static 메서드로 생성자를 사용하지 않고 정수나 문자열을 Integer 클래스로 반환 받을 수 있음
Integer num1 = Integer.valueOf("100");
Integer num2 = Integer.valueOf(100);
System.out.println(num1 + num2); // 200
- parseInt() : 문자열이 어떤 숫자를 나타낼 때, int 값을 반환
int num = Integer.parseInt("100");
System.out.println(num); // 100
오토박싱과 언박싱.
과거 자바 5 이전에는 Wrapper 클래스와 기본 타입의 연산을 위해 하나의 형태로 일치해야했지만
가령 Integer 클래스면 intValue() 사용해서 값 일치하고 사용 등
이제는 컴파일러에서 변경해주어 변환 없이 사용 가능.
Integer number = new Integer(50);
int intNumber = 200;
int sum = number + intNumber; // number.intValue()로 변환 : 언박싱
System.out.println(sum); // 250
Integer integerNumber = intNumber; // Integer.valueOf(intNumber) : 오토박싱
System.out.println(integerNumber); // 200
'BACKEND > JAVA' 카테고리의 다른 글
객체지향 프로그래밍과 클래스 (0) | 2023.06.05 |
---|---|
자바 - 스트림(Stream) (0) | 2023.06.04 |
자바 클래스 - String 클래스 (0) | 2023.05.27 |
자바 클래스 - Object 클래스 (0) | 2023.05.27 |
자바 오름차순/내림차순 정렬하기 - Arrays.sort() 함수 (0) | 2023.05.26 |