๐Ÿ’ป [Java] Java์˜ ๋ณ€์ˆ˜ - ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•, ๋ž˜ํผ ํด๋ž˜์Šค

๐Ÿ’ป [Java] Java์˜ ๋ณ€์ˆ˜ - ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•, ๋ž˜ํผ ํด๋ž˜์Šค

์•ˆ๋…•ํ•˜์„ธ์š”. ๐Ÿ‘‹

์˜ค๋Š˜์€ Java์˜ ๋ณ€์ˆ˜ - ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธํ˜• ํƒ€์ž… (Primitive Type)

  • ์ด 8๊ฐ€์ง€์˜ ๊ธฐ๋ณธํ˜• ํƒ€์ž…(Primitive type)์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค.
  • ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Null์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ ๊ธฐ๋ณธํ˜• ํƒ€์ž…์— null ๊ฐ’์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ž˜ํผ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
  • ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค.
  • ๋งŒ์•ฝ ์ปดํŒŒ์ผ ์‹œ์ ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฃผ๋กœ ๋ฌธ๋ฒ•์ƒ์˜ ์—๋Ÿฌ๊ฐ€ ๋งŽ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ;์„ ์•ˆ๋ถ™์˜€๋‹ค๋Š” ์ด์œ ๋กœ ๋นจ๊ฐ„ ์ค„์ด ์ณ์ง€๋Š” ๊ฒฝ์šฐ

data-type

์ฐธ์กฐํ˜• ํƒ€์ž… (Reference type)

  • ๊ธฐ๋ณธํ˜• ํƒ€์ž…์„ ์ œ์™ธํ•œ ํƒ€์ž…๋“ค์ด ๋ชจ๋‘ ์ฐธ์กฐํ˜• ํƒ€์ž…(Reference type)์ด๋‹ค.
  • ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— null ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ex) Date today; //์ฐธ์กฐํ˜• ๋ณ€์ˆ˜ today ์„ ์–ธ today = new Date(); // today์— ์ƒ์„ฑ ๋œ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ

Wrapper ํด๋ž˜์Šค

  • ๊ธฐ๋ณธํ˜• ํƒ€์ž…์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ๋“ค์„ ์ฐธ์กฐํ˜• ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Wrapper ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ์ฐธ์กฐํ˜• ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

Wraaper ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์›์‹œ ํƒ€์ž…์€ null์„ ๋‹ด์„ ์ˆ˜ ์—†๋‹ค. ๋ฐ˜๋ฉด ์ฐธ์กฐ ํƒ€์ž…์€ null์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์›์‹œ ํƒ€์ž…์€ ์ œ๋„ค๋ฆญ ํƒ€์ž…์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ˜๋ฉด์— ์ฐธ์กฐ ํƒ€์ž…์€ ์ œ๋„ค๋ฆญ ํƒ€์ž…์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ์กฐํ˜• ํƒ€์ž…(Wrapper ํด๋ž˜์Šค) vs ๊ธฐ๋ณธํ˜• ํƒ€์ž…

๊ธฐ๋ณธํ˜• ํƒ€์ž…์€ null์„ ๋‹ด์„ ์ˆ˜๋„ ์—†๊ณ  ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋„ ๋ถˆ๊ฐ€๋Šฅํ•œ๋ฐ

๊ทธ๋Ÿผ ์™œ ์“ฐ๋Š” ๊ฒƒ์ผ๊นŒ?

1.์ ‘๊ทผ ์†๋„
  • ์›์‹œ ํƒ€์ž…์€ โ€˜์Šคํƒโ€™ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค.
  • ๋ฐ˜๋ฉด์— ์ฐธ์กฐ ํƒ€์ž…์€ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— โ€˜์Šคํƒโ€™๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์ฐธ์กฐ ๊ฐ’(์ฃผ์†Œ)๋งŒ ์žˆ๊ณ , ์‹ค์ œ ๊ฐ’์€ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค.
    • ๊ธฐ๋ณธํ˜•์€ ๊ฐ’์— ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์ง€๋งŒ ์ฐธ์กฐํ˜•์€ ์ฃผ์†Œ ๊ฐ’์„ ์ด์šฉํ•ด ์‹ค์ œ ๊ฐ’์— ์ ‘๊ทผํ•ด์•ผํ•จ
  • ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ํ•„์š”๋กœ ํ•  ๋•Œ๋งˆ๋‹ค ์–ธ๋ฐ•์‹ฑ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๋‹ˆ ์›์‹œ ํƒ€์ž…๊ณผ ๋น„๊ตํ•ด์„œ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ฒŒ ๋œ๋‹ค.
    • ์˜ˆ์™ธ์ ์œผ๋กœ ์—„์ฒญ ํฐ ์ˆซ์ž๋ฅผ ๋ณต์‚ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์ฐธ์กฐ๊ฐ’๋งŒ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋Š” ์ฐธ์กฐ ํƒ€์ž…์ด ์ข‹์„ ์ˆ˜ ๋„ ์žˆ๋‹ค.

performance

2. ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘
  • ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์–‘๋„ ์ฐธ์กฐํƒ€์ž…์ด ํ›จ์”ฌ ๋งŽ๋‹ค.

64๋น„ํŠธ ์ปดํ“จํ„ฐ ๊ธฐ์ค€ ๋น„๊ตํ‘œ

performance

์ •๋ฆฌ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ฑ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ์— ์žฅ์ ์ด ์žˆ๋Š” ์›์‹œ ํƒ€์ž…์„ ๋จผ์ € ๊ณ ๋ คํ•œ๋‹ค.
  • ๋งŒ์•ฝ null์„ ๋‹ค๋ค„์•ผ ํ•˜๊ฑฐ๋‚˜, ์ œ๋„ค๋ฆญ ํƒ€์ž…์—์„œ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด ์ฐธ์กฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋

Java์˜ ๋ณ€์ˆ˜ - ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•, ๋ž˜ํผ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Reference

https://siyoon210.tistory.com/139

https://www.baeldung.com/java-primitives-vs-objects

https://stackoverflow.com/questions/2509025/when-to-use-primitive-and-when-reference-types-in-java

https://www.youtube.com/watch?v=xKj4N6eReQQ&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=16

https://gbsb.tistory.com/6

Written on June 21, 2021