개발자 미니민의 개발스터디

[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자리 반올림

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기