์๋ฐ์์ ์๋ฃํ(Data Type)์ ๋ณ์๊ฐ ์ด๋ค ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋์ง๋ฅผ ์ ์ํ๋ค. ํฌ๊ฒ ๊ธฐ๋ณธํ(Primitive Type)๊ณผ ์ฐธ์กฐํ(Reference Type)์ผ๋ก ๋๋ ์ ์๋ค.
๊ธฐ๋ณธํ์ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅํ๋ ํ์
์ด๋ค. ์ด 8๊ฐ์ง๊ฐ ์กด์ฌํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ๊ฐ์ด ์ ์ฅ๋๋ค.
๊ฐ ํ์
๋ณ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ๊ธฐ๋ณธ๊ฐ์ ์๋์ ๊ฐ๋ค.
์ฐธ์กฐํ์ ๊ฐ์ฒด์ ์ฃผ์(์ฐธ์กฐ๊ฐ)๋ฅผ ์ ์ฅํ๋ค. ๋ํ์ ์ผ๋ก String, ๋ฐฐ์ด, ํด๋์ค, ์ธํฐํ์ด์ค ๋ฑ์ด ์๋ค.
String name = "Java"; // ๋ฌธ์์ด ๊ฐ์ฒด ์ฐธ์กฐ
int[] numbers = {1, 2, 3}; // ๋ฐฐ์ด ๊ฐ์ฒด ์ฐธ์กฐ
myClass obj = new MyClass(); // ์ฌ์ฉ์ ์ ์ ํด๋์ค ๊ฐ์ฒด ์ฐธ์กฐ
๊ธฐ๋ณธํ์ด ์คํ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ฅ๋๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ์ฐธ์กฐํ์ ๊ฒฝ์ฐ ์คํ์๋ ๊ฐ์ฒด์ ์ฃผ์๊ฐ๋ง ์ ์ฅ๋๊ณ ์ค์ ๋ฐ์ดํฐ๋ ํ(Heap)์ ์ ์ฅ๋๋ค.
๋๋ฌธ์ ์ฌ๋ฌ ๋ณ์๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์๋ ์๊ณ ๊ฐ์ ์ ๊ทผ ์ ์คํ โ ํ์ ๊ฑฐ์น๋ฏ๋ก ๊ธฐ๋ณธํ๋ณด๋ค ์ ๊ทผ ์๋๊ฐ ๋ค์ ๋๋ฆฌ๋ค.
๋ํ ์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ์ฐธ์กฐํ ๋ณ์๋ผ๋ฆฌ == ๋น๊ต ์ ์ฃผ์๊ฐ์ ๋น๊ตํ๊ฒ ๋๋ฉฐ ์ค์ ๊ฐ์ ๋น๊ต๋ equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
String a = new String("BlueCool");
String b = new String("BlueCool");
System.out.println(a == b); // false (์ฃผ์ ๋น๊ต)
System.out.println(a.equals(b)); // true (๊ฐ ๋น๊ต)
์ถ๊ฐ์ ์ผ๋ก ์๋ฐ์์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(Garbage Collector)๊ฐ ๋ ์ด์ ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
Wrapper ํด๋์ค๋ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃจ๊ธฐ ์ํด ์ ๊ณต๋๋ค.
Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
1. ์ปฌ๋ ์ ํ๋ ์์ํฌ
List, Map, Set๊ณผ ๊ฐ์ ์ปฌ๋ ์ ์ ๊ฐ์ฒด๋ง ์ ์ฅํ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธํ ๋์ Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
2. null ๊ฐ ํํ
DB๊ฐ์ด ์์ ๋ API ์๋ต์์ ํ๋๊ฐ ๋น์ด์์ ๋ ์ ์ฉํ๋ค.
3. ํธ์ ๋ฉ์๋ ์ ๊ณต
Wrapper ํด๋์ค๋ ํ ๋ณํ, ๋ฌธ์์ด ๋ณํ, ์์๊ฐ ๋ฐํ ๋ฑ ๋ค์ํ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
4. ์ ๋ค๋ฆญ(Generic)๊ณผ ํจ๊ป ์ฌ์ฉ
์ ๋ค๋ฆญ ํ์ ์๋ ๊ธฐ๋ณธํ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
5. ๊ฐ์ฒด ์งํฅ ํธํ์ฑ
์๋ฐ API ์๋น์๊ฐ ๊ฐ์ฒด ํ์ ์ ์ ์ ๋ก ์ค๊ณ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ก ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ Wrapper ํด๋์ค๊ฐ ํ์์ ์ด๋ค.
๊ฐ ๊ธฐ๋ณธํ ์๋ฃํ์ ๋์ํ๋ Wrapper ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ๋ค.
byte โ Byte
short โ Short
int โ Integer
long โ Long
float โ Float
double โ Double
char โ Character
boolean โ Boolean
์๋ฐ5 ๋ถํฐ๋ ๊ธฐ๋ณธํ๊ณผ Wrapper ํด๋์ค ๊ฐ ๋ณํ์ด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
// ์คํ ๋ฐ์ฑ: ๊ธฐ๋ณธํ -> Wrapper
Integer numObj = 10; // Integer.valueOf(10) ์๋ ์ ์ฉ
// ์ธ๋ฐ์ฑ: Wrapper -> ๊ธฐ๋ณธํ
int num = numObj; // numObj.intValue() ์๋ ์ ์ฉ
1. null ๊ฐ๋ฅ์ฑ
Wrapper ํด๋์ค๋ ์ฐธ์กฐํ์ด๋ฏ๋ก null ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
Integer n = null;
// int m = n; // NullPointerException ๋ฐ์ (์ธ๋ฐ์ฑ ์)
2. ์ฑ๋ฅ
๊ธฐ๋ณธํ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง๊ณ ์ ๊ทผ ์๋๊ฐ ๋๋ฆฌ๋ค. (์ฐธ์กฐํ์ด๊ธฐ ๋๋ฌธ)
3. ๊ฐ ๋น๊ต ๋ฐฉ๋ฒ
== ์ฐ์ฐ์๋ ์ฃผ์๊ฐ์ ๋น๊ตํ๋ฏ๋ก ๊ฐ ๋น๊ต ์ equals()๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
