Backend/JAVA

[JAVA] ๋ฐ์ดํ„ฐ ํƒ€์ž… Primitive Type vs Wrapped Type

dddzr 2025. 2. 26. 20:49

๐Ÿ“Œ 1. ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ถ„๋ฅ˜

Wrapped Type์„ ์•Œ๊ธฐ ์ „์— Reference Type์— ๋Œ€ํ•ด ๋จผ์ € ์•Œ์•„๋ณด์ž.

์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค!

 

1๏ธโƒฃ ๊ธฐ๋ณธํ˜•(Primitive Type) → ๊ฐ’ ์ž์ฒด๋ฅผ ์ €์žฅ
2๏ธโƒฃ ์ฐธ์กฐํ˜•(Reference Type) → ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„ ์ €์žฅ

 

โœ… 1. ๊ธฐ๋ณธํ˜• (Primitive Type)

  • boolean, char, byte, short, int, long, float, double
  • ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ง์ ‘ ๊ฐ’์„ ์ €์žฅ
  • ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ํšจ์œจ์ 

โœ… 2. ์ฐธ์กฐํ˜• (Reference Type)

  • ๋ฐฐ์—ด(int[]), ํด๋ž˜์Šค(String, Integer, Double ๋“ฑ), ์ธํ„ฐํŽ˜์ด์Šค, ์—ด๊ฑฐํ˜•(Enum)
  • ๊ฐ์ฒด์˜ ์ฃผ์†Œ(์ฐธ์กฐ๊ฐ’)๋ฅผ ์ €์žฅ
  • ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

โžก๏ธ Wrapped Type(๋ž˜ํผ ํด๋ž˜์Šค)๋Š” ๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๊ฐ์‹ผ "์ฐธ์กฐํ˜•" ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‹ค!

 

๐Ÿ“Œ 2. Primitive Type (๊ธฐ๋ณธํ˜•)

์ž๋ฐ”์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ๊ฐ’์„ ์ €์žฅ.

 

โœ… ํŠน์ง•

  • ๊ฐ์ฒด(Object)๊ฐ€ ์•„๋‹˜ → new ํ‚ค์›Œ๋“œ ์—†์ด ์‚ฌ์šฉ
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ ๊ณ  ์†๋„๊ฐ€ ๋น ๋ฆ„
  • null์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ

 

โœ… ๊ธฐ๋ณธํ˜• ํƒ€์ž… ๋ชฉ๋ก

ํƒ€์ž… ํฌ๊ธฐ ๊ธฐ๋ณธ๊ฐ’ ์—์ œ
boolean 1๋น„ํŠธ false true, false
char 2๋ฐ”์ดํŠธ '\u0000' 'A', '1'
byte 1๋ฐ”์ดํŠธ 0 127, -128
short 2๋ฐ”์ดํŠธ 0 32000, -32000
int 4๋ฐ”์ดํŠธ 0 100, -50
long 8๋ฐ”์ดํŠธ 0L 100000L
float 4๋ฐ”์ดํŠธ 0.0f 3.14f
double 8๋ฐ”์ดํŠธ 0.0d 3.14159d

 

๐Ÿ“Œ 3. Wrapped Type (๋ž˜ํผ ํด๋ž˜์Šค, ๊ฐ์ฒดํ˜•)

๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๊ฐ์‹ผ ํด๋ž˜์Šค๋กœ, ์ž๋ฐ”์˜ java.lang ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

 

โœ… ํŠน์ง•

  • ๊ฐ์ฒด๋ผ์„œ null์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • ์ปฌ๋ ‰์…˜(List, Set, Map ๋“ฑ)์— ์ €์žฅ ๊ฐ€๋Šฅ
  • ๋ฉ”์†Œ๋“œ ์ œ๊ณต (toString(), parseInt(), compareTo() ๋“ฑ)
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ์†๋„๊ฐ€ ๋Š๋ฆผ

โœ… ๊ธฐ๋ณธํ˜• ↔ ๋ž˜ํผ ํด๋ž˜์Šค ๋งคํ•‘

Primitive Type Wrapped Type
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

 

๐Ÿ“Œ 4. Primitive Type vs Wrapped Type ์ฐจ์ด์ 

  Primitive Type Wrapped Type
์˜ˆ์ œ int, double, boolean Integer, Double, Boolean
์ €์žฅ ๋ฐฉ์‹ ์Šคํƒ(Stack)์— ์ €์žฅ ํž™(Heap)์— ์ €์žฅ (๊ฐ์ฒด)
null ์ €์žฅ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ โŒ ๋ถˆ๊ฐ€๋Šฅ โœ… ๊ฐ€๋Šฅ (Integer i = null;)
๊ธฐ๋ณธ๊ฐ’ 0, 0.0, false ๋“ฑ null ๊ฐ€๋Šฅ
๊ฐ์ฒด ์—ฌ๋ถ€ โŒ ๊ฐ์ฒด ์•„๋‹˜ โœ… ๊ฐ์ฒด
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ โฌ‡๏ธ ์ ์Œ โฌ†๏ธ ๋งŽ์Œ
๋ฉ”์„œ๋“œ ์ œ๊ณต โŒ ์—†์Œ โœ… Integer.parseInt(), Double.valueOf() ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
์ปฌ๋ ‰์…˜(List, Map) ์‚ฌ์šฉ โŒ ๋ถˆ๊ฐ€๋Šฅ โœ… ๊ฐ€๋Šฅ (List<Integer>)

 

 

๐Ÿ“Œ 5. Autoboxing & Unboxing (์ž๋™ ๋ณ€ํ™˜)

Java๋Š” Primitive Type ↔ Wrapped Type์„ ์ž๋™ ๋ณ€ํ™˜ํ•ด ์ค€๋‹ค!

 

โœ… ์˜คํ† ๋ฐ•์‹ฑ (Autoboxing)

๐Ÿ“– ๊ธฐ๋ณธํ˜• → ๋ž˜ํผ ํด๋ž˜์Šค (Primitive → Wrapped)

int a = 10;
Integer b = a; // ์ž๋™ ๋ณ€ํ™˜ (Autoboxing)

 

โœ… ์–ธ๋ฐ•์‹ฑ (Unboxing)

๐Ÿ“– ๋ž˜ํผ ํด๋ž˜์Šค → ๊ธฐ๋ณธํ˜• (Wrapped → Primitive)

Integer obj = new Integer(20);
int b = obj;  // ์ž๋™ ๋ณ€ํ™˜ (Unboxing)

 

โš ๏ธ ์ฃผ์˜ํ•  ์ 

  • null์„ ์–ธ๋ฐ•์‹ฑ ํ•˜๋ฉด NullPointerException ๋ฐœ์ƒ!
Integer num = null;
int value = num; // โŒ NullPointerException ๋ฐœ์ƒ!

 

๐Ÿš€6. Primitive Type vs Wrapped Type ์–ธ์ œ ์จ์•ผ ํ• ๊นŒ?

โœ… Primitive Type์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ

  • ์—ฐ์‚ฐ์ด ๋งŽ์€ ๊ฒฝ์šฐ (int, double ๋“ฑ์€ ๋ฉ”๋ชจ๋ฆฌ ์ ๊ฒŒ ์“ฐ๊ณ  ๋น ๋ฆ„!)
  • ๋‹จ์ˆœํ•œ ๋ณ€์ˆ˜ ์ €์žฅ (๊ฐ์ฒด๊ฐ€ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ)

โœ… Wrapped Type์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ

  • ์ปฌ๋ ‰์…˜(List, Map ๋“ฑ)์— ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ (List<Integer>)
  • null์„ ํ—ˆ์šฉํ•ด์•ผ ํ•  ๋•Œ (Integer num = null;)
  • ๊ฐ์ฒด๋กœ์„œ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•  ๋•Œ (Integer.parseInt() ๋“ฑ

 

๐Ÿš€ Primitive Type์€ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•  ๋•Œ, Wrapped Type์€ ์ปฌ๋ ‰์…˜๊ณผ null์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค! ๐Ÿ˜Š


'Backend > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

static ํ‚ค์›Œ๋“œ  (0) 2025.02.26
JNDI๋ž€?  (0) 2025.02.26
์ž๋ฐ”(Spring) ๊ธฐ๋ณธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ  (0) 2025.02.23
[Java] ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ (ExecutorService VS CompletableFuture)  (0) 2025.02.23
HttpURLConnection  (0) 2024.06.07