[Java] Wrapper Class

2021. 6. 22. 06:00ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/Java

728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”? ์ฃผ๋‹ˆํ•˜๋ž‘ ์ž…๋‹ˆ๋‹ค!

์˜ค๋Š˜์€ ์ž๋ฐ”์˜ Wrapper Class์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ์ด์—์š”!

์ž๋ฐ”์˜ Optional์—์„œ ํ•„์š”ํ•œ ๊ฐœ๋…์ด๋‹ˆ ๊ผญ ์ˆ™์ง€ ํ•˜์…จ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”!

๋ฐ”๋กœ ์‹œ์ž‘ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!


 

๐Ÿ“Œ ๋ž˜ํผํด๋ž˜์Šค๋ž€(Wrapper Class)? 


ํ”„๋กœ๊ทธ๋žจ์— ๋”ฐ๋ผ ๊ธฐ๋ณธ ํƒ€์ž…์˜ Data๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด? Method์˜ ์ธ์ˆ˜๋กœ ๊ฐ์ฒด ํƒ€์ž…๋งŒ์ด ์š”๊ตฌ๋˜๋ฉด, ๊ธฐ๋ณธ ํƒ€์ž…์˜ Data๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†๋Š” ๊ฒƒ์ด์—์š”.

์ด ๋•Œ์—๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์˜ Data๋ฅผ ๋จผ์ € ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ๊ฒ ์ง€์š”?

 

์ด๋ ‡๊ฒŒ 8๊ฐœ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์˜ ํ•ด๋‹นํ•˜๋Š” Data๋ฅผ ๊ฐ์ฒด๋กœ ํฌ์žฅํ•ด ์ฃผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ž˜ํผ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ต๋‹ˆ๋‹ค.

๋ž˜ํผ ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ์˜ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” Data๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„, ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ต๋‹ˆ๋‹ค!

์ด๋Ÿฌํ•œ ๋ž˜ํผ ํด๋ž˜์Šค๋Š” ๋ชจ๋‘ java.long Package์— ํฌํ•จ๋˜์–ด ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

์ž๋ฐ”์˜ ๊ธฐ๋ณธ ํƒ€์ž…์— ๋Œ€์‘ํ•˜์—ฌ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๋ž˜ํผ ํด๋ž˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์•„์š”!

๊ธฐ๋ณธ ํƒ€์ž… ๋ž˜ํผ ํด๋ž˜์Šค
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

Wrapper Class ์ค‘์—์„œ Integer Class์™€ Character Class๋งŒ์ด ์ž์‹ ์˜ ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ์ด๋ฆ„์ด ๋‹ค๋ฆ„์„ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”!

 

 

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ธฐ๋ณธ ํƒ€์ž…์˜ Data๋ฅผ Wrapper Class์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ Boxing์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ๋ฐ˜๋Œ€๋กœ Wrapper Class์˜ ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์„ ๋‹ค์‹œ ๊ธฐ๋ณธ ํƒ€์ž…์˜ Data๋กœ ๊บผ๋‚ด๋Š” ๊ณผ์ •์„ UnBoxing์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

      ๐Ÿ“ AutoBoxing๊ณผ AutoUnBoxing

JDK 1.5 ์ด์ƒ๋ถ€ํ„ฐ ๋ฐ•์‹ฑ๊ณผ ์–ธ๋ฐ•์‹ฑ์ด ํ•„์š”ํ•  ๋•Œ, ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ ํ•ด์ค€๋‹ต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž๋™ํ™”๋œ ๋ฐ•์‹ฑ๊ณผ ์–ธ๋ฐ•์‹ฑ์„ ์˜คํ†  ๋ฐ•์‹ฑ, ์˜คํ†  ์–ธ๋ฐ•์‹ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด์—์š”.

๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋ฐ•์‹ฑ๊ณผ ์–ธ๋ฐ•์‹ฑ, ์˜คํ†  ๋ฐ•์‹ฑ, ์˜คํ†  ์–ธ๋ฐ•์‹ฑ์„ ์ข€ ๋” ์•Œ์•„ ๋ณด๊ธฐ๋กœ ํ•ด์š”!

Integer num = new Integer(17);		// Boxing
int n = num.intValue();				// UnBoxing
System.out.println(n);


Character ch = 'X';					// Character ch = new Character('X');	-> AutoBoxing
char c = ch;						// char c = ch.charValue();				-> AutoUnBoxing
System.out.println(c);



// #########################################################

// ์‹คํ–‰ ๊ฒฐ๊ณผ

17
X

์œ„์˜ ์˜ˆ์ œ์—์„œ ๋ณด๋“ฏ ๋ž˜ํผ ํด๋ž˜์Šค์ธ Integer Class์™€ Character Class์—๋Š” ๊ฐ๊ฐ ์–ธ๋ฐ•์‹ฑ์„ ์œ„ํ•œ intValue()์™€ CharValue()๊ฐ€ ํฌํ•จ ๋˜์–ด ์žˆ๋‹ต๋‹ˆ๋‹ค.

๋˜ํ•œ, ์˜คํ†  ๋ฐ•์‹ฑ์„ ์ด์šฉํ•˜๋ฉด new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ž๋™์œผ๋กœ Charcter ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

๋ฐ˜๋Œ€๋กœ charValue()๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„, ์˜คํ†  ์–ธ๋ฐ•์‹ฑ์„ ์ด์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ”๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค!

 

Public class Wrapper02 {
	public static void main(String[] args) {
    	Integer num1 = new Integer(7);		// Boxing
        Integer num2 = new Integer(3);		// Boxing
        
        int int1 = num1.intValue();			// UnBoxing
        int int2 = num2.intValue();			// UnBoxing
        
        Integer result1 = num1 + num2;		// 10
        Integer result2 = int1 - int2;		// 4
        int result3 = num1 * int2;			// 21
    }
}



// #################################################################

// ์‹คํ–‰ ๊ฒฐ๊ณผ

10
4
21

 

์œ„์˜ ์˜ˆ์ œ์—์„œ Integer result1 = num1 + num2;์™€ Integer result2 = int1 - int2; ๊ทธ๋ฆฌ๊ณ , int result3 = num1 * int2;์˜ ์—ฐ์‚ฐ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ž˜ํผ ํด๋ž˜์Šค์ธ ํ”ผ ์—ฐ์‚ฐ์ž๋ฅผ ์˜คํ†  ์–ธ๋ฐ•์‹ฑํ•˜์—ฌ ๊ธฐ๋ณธ ํƒ€์ž…๋ผ๋ฆฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

public class Wrapper03 {
	public static void main(String[] args)	{
    	Integer num1 = new Integer(10);
        Integer num2 = new Integer(20);
        Integer num3 = new Integer(10);
        
        System.out.println( num1 < num2 );		// true
        System.out.println( num1 == num3 );		// false
        System.out.println( num1.equals( num3 ) ); true
    }
}


// ########################################################
// ์‹คํ–‰ ๊ฒฐ๊ณผ

true
false
true

 

๋ž˜ํผ ํด๋ž˜์Šค์˜ ๋น„๊ต ์—ฐ์‚ฐ๋„ ์˜คํ†  ์–ธ๋ฐ•์‹ฑ์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์˜ ๋™๋“ฑ ์—ฌ๋ถ€ ํŒ๋‹จ์€ System.out.println(num1 == num3);์ฒ˜๋Ÿผ ๋น„๊ต ์—ฐ์‚ฐ์ž์ธ ๋™๋“ฑ ์—ฐ์‚ฐ์ž ' == '๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๊ณ , ๊ทธ ๋‹ค์Œ ์ค„์ฒ˜๋Ÿผ equals() Method๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

๋ž˜ํผ ํด๋ž˜์Šค๋„ ๊ฐ์ฒด์ด๋ฏ€๋กœ ๋™๋“ฑ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ๋‘ ์ธ์Šคํ„ด์Šค ๊ฐ’์ด ์•„๋‹Œ ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•˜๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค!

๋”ฐ๋ผ์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ธ์Šคํ„ด์Šค๋ฅผ ๋™๋“ฑ ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•˜๊ฒŒ ๋˜๋ฉด ๋‹น์—ฐํžˆ false๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๊ฒ ์ง€์š”?

๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์˜ ๋™๋“ฑ ์—ฌ๋ถ€๋ฅผ ์ •ํ™•ํžˆ ํŒ๋‹จํ•˜๋ ค๋ฉด equalse()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”!

 

 

 

 

 


์ฃผ๋‹ˆํ•˜๋ž‘์˜ ๊ธ€์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”? ๊ตฌ๋…๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋Œ“๊ธ€์€ ์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ ๋งŽ์€ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค!

728x90
๋ฐ˜์‘ํ˜•