본문 바로가기

BackEnd/Java

[java] 이것이 자바다 ch12 포장 클래스

728x90
반응형

1. 포장 객체

   ▷ 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체

   ▷ 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는 목적

 

NO 기본 타입 포장 클래스
1 byte Byte
2 char Character
3 short Short
4 int Integer
5 long Long
6 float Float
7 double Double
8 boolean Boolean

 

 

2. 박싱과 언박싱

   ▷ 박싱 : 기본 타입 값을 포장 객체로 만드는 과정, 포장 클래스 변수에 기본 타입 값이 대입 시 발생

   ▷ 언박싱 : 포장 객체에서 기본 타입 값을 얻어내는 과정, 기본 타입 변수에 포장 객체가 대입 시 발생

Integer obj = 100;  // 박싱
int value = obj;       // 언박싱

int value = obj + 50;  // 언박싱 후 연산

 

public class BoxingUnBoxingExample {

	public static void main(String[] args) {
		// Boxing
		Integer obj = 100;
		System.out.println("value : " + obj.intValue());
		
		// Unboxing
		int value = obj;
		System.out.println("value : " + value);
		
		// 연산 시 Unboxing
		int result = obj + 100;
		System.out.println("result : " + result);
		
//		컬렉션이라는 자료 구조 형태에서 사용하기 위해서 포장을 합니다.
//		객체 형태로 되어 있어야함.
	}
}

//	출력 : 
//	value : 100
//	value : 100
//	result : 200

 

 

3. 문자열을 기본 타입 값으로 변환

   ▷ 포장 클래스는 문자열을 기본 타입 값으로 변환할 때도 사용합니다.

   ▷ 대부분의 포장 클래스에는 'parse+기본타입' 명으로 되어 있는 정적 메소드가 있습니다.

 

 

4. 포장 값 비교

   ▷ 포장 객체는 번지를 비교하므로 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없습니다.

   ▷ 다음 범위의 값을 갖는 포장 객체는 ==와 != 연산자로 비교할 수 있지만,

       내부 값을 비교하는이 아니라 객체 번지를 비교하는 것입니다.

NO 타입 값의 범위
1 boolean true, false
2 char \u0000 ~ \u007f
3 byte, short, int -128 ~ 127

 

   ▷ 대신 포장 클래스의 equals() 메소드로 내부 값을 비교할 수 있습니다.

 

public class ValueCompareExample {

	public static void main(String[] args) {
		// -128~127 초과 값일 경우
		Integer obj1 = 300;
		Integer obj2 = 300;
		System.out.println("==: " + (obj1 == obj2));
		System.out.println("equals(): " + obj1.equals(obj2));
		System.out.println();
		
		// -128~127 범위 값일 경우
		Integer obj3 = 10;
		Integer obj4 = 10;
		System.out.println("==: " + (obj3 == obj4));
		System.out.println("equals(): " + obj3.equals(obj4));
	}
}

//	출력 :
//	==: false
//	equals(): true
//	
//	==: true
//	equals(): true


▷ 범위를 초과하면 객체의 번지는 달라지고 equals를 통한 메소드 내부의 값은 같다고 출력됩니다.
 범위 내에 있으면 객체의 번지와 메소드 내부 값은 같습니다.

 

포장을 사용하는 이유는 이후에 컬렉션이라는 자료 구조 형태에서 사용하기 위해서 포장을 합니다.
따라서, 객체 형태로 되어 있어야합니다!

 

사용 방법을 좀 알고 있는 것이 좋겠네요!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형