[JAVA] 자바 - Wrapper class 란? 개념 정리
by mini_min[JAVA[
자바 - Wrapper class
드디어 오늘 수업 마지막!!❤️
✔️ wrapper class 개념
기본형 데이터를 제외한 나머지는 클래스로 정의하여 객체 단위로 처리하는 것. 기본 자료형을 객체 단위로 처리할 수 있도록 클래스를 제공하는 것을 의미한다.
◾ 특징
- 기본형은 null 을 가질 수 없지만, wrapper class는 null을 가질 수 있다.
- 내용 불변 (immutable)
- 내용이 변경되면, 새로운 영역의 메모리가 할당되고, 기존 인스턴스는 GC 의 대상이 된다.
- wrapper class 끼리는 서로 비교가 불가하다. 모두 동등하다고 봐야한다.
public static void main(String[] args) {
int a = 10, n;
Integer b = null;
//Integer : int에 대응하는 wrapper 클래스
//wrapper 클래스 객체는 null을 가질 수 있다.
b = a; //서로 대응되는 wrapper clas는 대입 가능
//int a가 Integer 로 자동변환 (autoboxing)
System.out.println(a + "," + b); //10,10 but 둘이 같은건 아니다.
b = 50;
n = b; //Integer 가 int 로 자동 변환(auto-unboxing)
System.out.println(n + "," + b);
System.out.println(b == n); //true
}
◾ (autoboxing)
기본자료형을 wrapper 클래스 객체로 자동으로 변경하는 과정, 반대는 언박싱(Auto-unboxing) 이다.
💡 wrapper 클래스는 대응되는 클래스에 대입 가능하다
✔️ Integer.MAX_VALUE
최대값 : Integer.MAX_VALUE
최소값 : Integer.MIN_VALUE
SIZE : Integer.SIZE
BYTES : Integer.BYTES
TYPE : Integer.TYPE
✔️ 문자열을 정수로 변환
a = Integer.parseInt(s1);
b = Integer.parseInt(s2);
//s1, s2 는 문자열
//a,b의 자료형은 int
a = Integer.parseInt("b1", 16);
System.out.println(a); //177
a = Integer.parseInt("1100", 2);
System.out.println(a); //12 (2진수니까)
a = Integer.parseInt("1000");
System.out.println(a); //177
◾ 숫자로 바꿀 수 없는 형태인 경우, 반환불가이다. (띄어쓰기나 콤마 포함된 것 등...)
💡 parseInt (문자열, 진수) 진수를 16으로 줄 경우,16진수로 출력이 되고 진수를 2로 줄 경우, 2진수로 출력된다.
✔️ 정수를 문자열로 변환
객체에 대한 정보를 나타내는 toString 과 헷갈릴 수 있으니 주의... Integer.toString은 정수를 문자열로 변환한다.
2진수의 문자열은 to 다음에 Binary 넣어서 코드 짜면 된다.
a = 652;
s1 = Integer.toBinaryString(a); //2진수의 문자열로 변환
System.out.println(s1);
✔️ 아주 큰 정수 다루기
BigInteger은 아주 큰 정수를 다룰 때 사용한다.
BigInteger c = a.add(b); <- 이렇게 큰 수의 덧셈도 가능하다!
BigInteger a = new BigInteger("123456789123456789123456789123456789");
BigInteger b = new BigInteger("123456789123456789123456789123456789");
BigInteger c = a.add(b); //큰 수의 덧셈!
System.out.println(c);
💡 번외로, BigDecimal 도 있는데, 소수점을 다룰 때 사용한다고 볼 수 있다.
BigDecimal b = a.movePointLeft(3); //소수점을 왼쪽으로 3칸 이동
BigDecimal d = a.divide(c, RoundingMode.DOWN); //반올림
d = a.divide(c, 3, RoundingMode.DOWN); // 소수점 이하 3자리 반올림
'Java' 카테고리의 다른 글
[JAVA] 자바 - String 클래스 (1) (⭐⭐⭐중요) (0) | 2022.07.21 |
---|---|
[JAVA] 자바 - Calendar 클래스 (달력 만들기, 나이 구하기) (0) | 2022.07.21 |
[JAVA] 자바 - 기본 API 클래스 (import, static import, object, equals) (0) | 2022.07.20 |
[JAVA] 자바 - singleton(싱글톤) 과 getInstance (0) | 2022.07.20 |
[JAVA] 자바 - 인스턴스/static 초기화 블록 의미 (0) | 2022.07.20 |
블로그의 정보
개발자 미니민의 개발로그
mini_min