๊ฐœ๋ฐœ์ž ํ˜ธ์†Œ์ธ

[Class -08] ์ ‘๊ทผ ์ˆ˜์ค€ ์ง€์‹œ์ž / ๊ฐ์ฒด ๋ฐฐ์—ด

๋ฆฌ์ œ๐Ÿซง 2026. 5. 27. 12:29
์ •๋Ÿ‰์ ์œผ๋กœ ์—ด์‹ฌํžˆ ํ•ด๋ผ .



 

 

 

 

 

์‹ค์ œ ํ™”๋ฉด

 

ํ•ด์„ค

 

์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์˜ ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ด€ํ†ตํ•˜๋Š”

์ •์  ๊ณต๊ฐ„(Static), ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ์ดํ•ดํ•˜๊ธฐ

 

 

1. ์ •์  ๋ฉค๋ฒ„์™€ ์ƒ์ˆ˜์˜ ๊ฐœ๋… (Static & Constant)

์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ ๋ฉ”์„œ๋“œ ์˜์—ญ(Method Area ๋˜๋Š” Static Area)์„ ๋‹ค๋ฃจ๋Š” ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ.

ํด๋ž˜์Šค ๋ณ€์ˆ˜ (Static Variable)

  • ๊ฐœ๋…: ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€ ์•ž์— static ์ง€์‹œ์–ด๊ฐ€ ๋ถ™์€ ํ•„๋“œ๋Š” ํŠน์ • ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)์— ์ข…์†๋˜์ง€ ์•Š๊ณ , ํด๋ž˜์Šค ์ž์ฒด์— ๊ณ ์ •๋˜๋Š” 'ํด๋ž˜์Šค ๋ณ€์ˆ˜'๊ฐ€ ๋œ๋‹ค.
  • ํŠน์ง• ๋ฐ ์ ‘๊ทผ์„ฑ: ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹จ ํ•œ ๋ฒˆ๋งŒ ๋กœ๋“œ๋˜๋ฉฐ, ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ (Share)ํ•œ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ(new)ํ•˜์ง€ ์•Š๊ณ ๋„ ํด๋ž˜์Šค๋ช….๋ณ€์ˆ˜๋ช… ํ˜•ํƒœ๋กœ ์–ด๋””์„œ๋“  ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ณต๊ฐ„์  ํšจ์œจ์„ฑ์„ ๊ฐ€์ง€๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

์ •์  ์ƒ์ˆ˜ (Static Final)

  • ๊ฐœ๋…: static๊ณผ ์ˆ˜์ • ๋ถˆ๊ฐ€๋ฅผ ๋œปํ•˜๋Š” final์ด ๊ฒฐํ•ฉํ•œ ํ˜•ํƒœ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ '์ƒ์ˆ˜(Constant)'๋ผ๊ณ  ์ •์˜.
  • ํŠน์ง•: ๋ฉ”๋ชจ๋ฆฌ์— ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋ฉด์„œ(static), ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋œ ์ดํ›„์—๋Š” ์ ˆ๋Œ€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š”(final) ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ฃผ๋กœ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ๊ณต์œ ํ•˜๋Š” ๊ณ ์ • ๋ฐ์ดํ„ฐ(์˜ˆ: Math.PI ๋“ฑ)๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

2. ๋™์  ๊ฐ์ฒด ์ƒ์„ฑ์˜ ์›๋ฆฌ (The 'new' Keyword)

์ž๋ฐ”์—์„œ ์‹ค์ฒดํ™”๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์ž‘๋™ ์›๋ฆฌ.

  • new ์—ฐ์‚ฐ์ž์˜ ์—ญํ• : ์„ค๊ณ„๋„(Class)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ด์•„ ์ˆจ ์‰ด ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฐœ์„คํ•˜๋Š” ๋ช…๋ น์–ด.
  • ์ƒ์„ฑ์ž ํ˜ธ์ถœ๊ณผ์˜ ๊ด€๊ณ„: new ์—ฐ์‚ฐ์ž ๋’ค์— ์ƒ์„ฑ์ž ํ•จ์ˆ˜(Constructor())๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์ˆœ๊ฐ„, ๋น„๋กœ์†Œ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜๋ฉฐ ๋…๋ฆฝ์ ์ธ '์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)'๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ๋จ.

3. ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์ฐธ์กฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜ (Object Array & Null)

๊ฐ€์žฅ ํ˜ผ๋™ํ•˜๊ธฐ ์‰ฌ์šด ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜(Reference Type)์˜ ์ฃผ์†Œ ํ• ๋‹น ์ฒด๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช….

1๋‹จ๊ณ„: ๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ๊ณต๊ฐ„ ํ™•๋ณด (Book[] bArr = new Book[3];)

  • ์ด ์‹œ์ ์—๋Š” ์‹ค์ œ Book ๊ฐ์ฒด 3๊ฐœ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.. ๋‹จ์ง€ "Book ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ(๋ฆฌ๋ชจ์ปจ)๋ฅผ ๊ฝ‚์•„๋‘˜ ์ˆ˜ ์žˆ๋Š” 3๊ฐœ์˜ ๋นˆ ์นธ"๋งŒ ํ™•๋ณดํ•œ ์ƒํƒœ.
  • ์ž๋ฐ”์—์„œ ์ฃผ์†Œํ˜• ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ ๋””ํดํŠธ ๊ฐ’์€ null. ์ฆ‰, ์–ด๋–ค ์‹ค์ œ ๊ฐ์ฒด์™€๋„ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๋นˆ ์ƒํƒœ(์ฐธ์กฐ ๋ถˆ๋Šฅ)์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

2๋‹จ๊ณ„: ์š”์†Œ๋ณ„ ์‹ค์ œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋งคํ•‘ (bArr[i] = new Book();)

  • ์ฃผ์†Œ๊ฐ€ null์ธ ์ƒํƒœ์—์„œ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ๋‹ค์šด๋˜๋Š” ์—๋Ÿฌ(NullPointerException)๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ˜๋“œ์‹œ ๊ฐ ์นธ๋งˆ๋‹ค ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋Š” 2์ฐจ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.
  • bArr[i] = new ํด๋ž˜์Šค๋ช…(); ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•ด์•ผ ๋น„๋กœ์†Œ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ง„์งœ ๊ฐ์ฒด๊ฐ€ ์†Œํ™˜๋˜๊ณ , ๊ทธ ๊ฐ์ฒด์˜ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์ด ๋น„์–ด์žˆ๋˜ bArr[i] ์นธ์— ํ• ๋‹น๋˜๋ฉด์„œ ์ •์ƒ์ ์ธ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

 

์ž๋ฐ”(Java)์—์„œ ๊ฐ์ฒด ๋ฐฐ์—ด(Array of Objects)์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ)์˜ ๋ณ€์ˆ˜๋“ค์„ ๋ฌถ๋Š” ์ผ๋ฐ˜ ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ, ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์˜ ์ฃผ์†Œ(์ฐธ์กฐ๊ฐ’)๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์„ ์˜๋ฏธํ•จ.

๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ '์„ค๊ณ„๋„๋กœ ์ฐ์–ด๋‚ธ ๋ณตํ•ฉ ๋ฐ์ดํ„ฐ'๋“ค์„ ๋Œ€๋Ÿ‰์œผ๋กœ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜์ž„.

โ—† ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์ •์˜์™€ ํŠน์ง•

  • ์ •์˜: ์ฐธ์กฐ ํƒ€์ž… ๋ณ€์ˆ˜๋“ค์„ ๋ชจ์•„๋†“์€ ๊ตฌ์กฐ์ด๋ฉฐ, ๋ฐฐ์—ด์˜ ๊ฐ ์นธ์—๋Š” ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ์˜ '์ฃผ์†Œ๋ก'์ด ๋“ค์–ด๊ฐ.
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…: ๋ฐฐ์—ด์˜ ํƒ€์ž…์ด int[]๋‚˜ double[]์ด ์•„๋‹Œ, Member[], Product[]์™€ ๊ฐ™์ด ๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋ฐฐ์—ด์˜ ํƒ€์ž…์ด ๋จ.

โ—† ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ 

์ผ๋ฐ˜ ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ์ƒ์„ฑํ•˜๋ฉด ๊ทธ ์ฆ‰์‹œ ์นธ ์•ˆ์— ๊ธฐ๋ณธ๊ฐ’(0 ๋“ฑ) ์•Œ๋งน์ด๊ฐ€ ์ง์ ‘ ์ฑ„์›Œ์ง. ๋ฐ˜๋ฉด ๊ฐ์ฒด ๋ฐฐ์—ด์€ 2๋‹จ๊ณ„ ์ƒ์„ฑ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ๋งŒ ์ •์ƒ ์ž‘๋™ํ•จ. ์ด ๋‹จ๊ณ„๋ฅผ ๋†“์น˜๋ฉด NullPointerException ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋จ.

๋‹จ๊ณ„ โ‘ : ๋ฐฐ์—ด ์ƒ์ž(์ฃผ์†Œ๋ก ์นธ) ์ƒ์„ฑ

 
Book[] library = new Book[3]; // ๐Ÿ’ก 3์นธ์งœ๋ฆฌ ์ฃผ์†Œ๋ก ์ƒ์ž๋ฅผ ๋งŒ๋“ฆ
  • ๋ฉ”๋ชจ๋ฆฌ ํ˜„ํ™ฉ: ์Šคํƒ(Stack) ์˜์—ญ์— library ๋ณ€์ˆ˜๊ฐ€ ์ƒ๊ธฐ๊ณ , ํž™(Heap) ์˜์—ญ์— 3์นธ์งœ๋ฆฌ ๋ฐฐ์—ด ๊ณต๊ฐ„์ด ํŒŒ์ง.
  • ์ฃผ์˜: ์ด๋•Œ ๊ฐ ์นธ ๋‚ด๋ถ€์—๋Š” ์‹ค์ œ Book ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š๊ณ  ๋นˆ ์ฃผ์†Œ ์ƒํƒœ์ธ null๋กœ๋งŒ ๊ฐ€๋“ ์ฐจ ์žˆ์Œ.

๋‹จ๊ณ„ โ‘ก: ๊ฐ ์นธ์— ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์—ฐ๊ฒฐ

 
library[0] = new Book("์ž๋ฐ”์˜ ์ •์„"); // ๐Ÿ’ก 0๋ฒˆ ์นธ์— ์ง„์งœ ์ฑ… ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•จ
library[1] = new Book("ํŒŒ์ด์ฌ ๊ธฐ์ดˆ");
library[2] = new Book("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค");
  • ๋ฉ”๋ชจ๋ฆฌ ํ˜„ํ™ฉ: ํž™(Heap) ์˜์—ญ์˜ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ณต๊ฐ„์— ์ง„์งœ Book ๊ฐ์ฒด ๋ฐฉ 3๊ฐœ๊ฐ€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๊ณ , ๊ทธ ๋ฐฉ ๋ฒˆํ˜ธ(์ฃผ์†Œ)๊ฐ€ library ๋ฐฐ์—ด์˜ 0, 1, 2๋ฒˆ ์นธ์— ํ•˜๋‚˜์”ฉ ์ €์žฅ๋จ.

โ—† ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์žฅ์ 

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐํ™”: ๋˜‘๊ฐ™์€ ํด๋ž˜์Šค ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ 100๊ฐœ, 1,000๊ฐœ๋กœ ๋Š˜์–ด๋‚  ๋•Œ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ 1,000๊ฐœ ๋งŒ๋“ค ํ•„์š” ์—†์ด ๋‹จ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด ์ด๋ฆ„๊ณผ ์ธ๋ฑ์Šค([i])๋กœ ์ผ๊ด„ ์ œ์–ด ๊ฐ€๋Šฅํ•จ.
  • ๋ฐ˜๋ณต๋ฌธ๊ณผ์˜ ๊ฐ•๋ ฅํ•œ ๊ฒฐํ•ฉ: ์ „์ฒด ๊ฐ์ฒด๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ์ œ์–ดํ•  ๋•Œ for ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ.

โ—† ์ „์ฒด ๊ตฌํ˜„ ์†Œ์Šค ์ฝ”๋“œ ์˜ˆ์‹œ


 
class Student {
    private String name;
    private int grade;

    public Student(String name, int grade) {
        this.name = name;
        this.grade = grade;
    }

    public void printInfo() {
        System.out.println(name + " ํ•™์ƒ : " + grade + "ํ•™๋…„");
    }
}

public class Main {
    public static void main(String[] args) {
        // 1. ๊ฐ์ฒด ๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ํฌ๊ธฐ ์ง€์ • (์ฃผ์†Œ๋ก ์ƒ์ž ์ƒ์„ฑ)
        Student[] arr = new Student[3];

        // 2. ๊ฐ ์ธ๋ฑ์Šค์— ์‹ค์ œ ๊ฐ์ฒด ์ƒ์„ฑํ•˜์—ฌ ์ฃผ์†Œ ๋Œ€์ž… (ํ•„์ˆ˜)
        arr[0] = new Student("ํ™๊ธธ๋™", 1);
        arr[1] = new Student("์ด์ˆœ์‹ ", 3);
        arr[2] = new Student("์œ ๊ด€์ˆœ", 2);

        // 3. ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•œ ๊ฐ์ฒด ๋ฐฐ์—ด ์ผ๊ด„ ์ œ์–ด ๊ธฐ๋Šฅ ์ˆ˜ํ–‰
        for (int i = 0; i < arr.length; i++) {
            arr[i].printInfo(); // ๊ฐ ๋ฐฉ์˜ ์ฃผ์†Œ๋ฅผ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ๊ฐ€๋™
        }
    }
}

โ—† ์ตœ์ข… ์š”์•ฝ

  • ๊ฐ์ฒด ๋ฐฐ์—ด์€ ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋ฐฐ์—ด ์นธ์— ๋“ค์–ด๊ฐ€๋Š” ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ž„.
  • ๋ฐฐ์—ด ์ƒ์„ฑ(new ํƒ€์ž…[ํฌ๊ธฐ]) ํ›„, ๋ฐ˜๋“œ์‹œ ๊ฐ ์นธ๋งˆ๋‹ค ๋ณ„๋„๋กœ ๊ฐ์ฒด ์ƒ์„ฑ(new ํƒ€์ž…())์„ ํ•ด์ฃผ์–ด์•ผ ๋ฐ์ดํ„ฐ ์˜ค์—ผ๊ณผ ์—๋Ÿฌ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ.
  •  
  • ์ž๋ฐ”(Java)์—์„œ ๊ฐ์ฒด ๋ฐฐ์—ด(๋˜๋Š” ์ผ๋ฐ˜ ๋ฐฐ์—ด)์„ ๋งŒ๋“ค๊ณ  ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์›Œ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ "์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”"์™€ "์„ ์–ธ๊ณผ ๋™์‹œ์— ํ• ๋‹น ๋ฐ ์ดˆ๊ธฐํ™”" ๋‘ ๊ฐ€์ง€ ์•„ํ‚คํ…์ฒ˜๋กœ ๋‚˜๋‰จ.

โ—† ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™” (์ˆœ์ฐจ์  ํ• ๋‹น)

๊ตฌ๋™ ๋งค์ปค๋‹ˆ์ฆ˜:

  • 1๋‹จ๊ณ„๋กœ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง„ ์ฃผ์†Œ๋ก ๋ฐฐ์—ด์„ ๋จผ์ € ๋งŒ๋“ฆ. (์ด๋•Œ ๋‚ด๋ถ€ ์นธ์€ ์ „๋ถ€ null๋กœ ์ดˆ๊ธฐํ™”๋จ)
  • 2๋‹จ๊ณ„๋กœ ๊ฐ ์ธ๋ฑ์Šค ์นธ์— ์‹ค์ œ ๊ฐ์ฒด๋ฅผ new๋กœ ์ƒ์„ฑํ•ด ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•จ.
  • ์ฝ”๋“œ ๊ตฌ์กฐ:
  •  
  • Java
     
    // ๐Ÿ’ก 1๋‹จ๊ณ„: 3์นธ์งœ๋ฆฌ ๋นˆ ๋ฐฐ์—ด ๊ณต๊ฐ„ ์ƒ์„ฑ
    Student[] arr = new Student[3]; 
    
    // ๐Ÿ’ก 2๋‹จ๊ณ„: ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ฐ๊ฐ ๊ฐ์ฒด ๋Œ€์ž…
    arr[0] = new Student("ํ™๊ธธ๋™", 20);
    arr[1] = new Student("์ด์ˆœ์‹ ", 30);
    arr[2] = new Student("์œ ๊ด€์ˆœ", 18);
    
  • ์žฅ์  ๋ฐ ํŠน์ง•: * ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ •ํ˜•ํ™”๋˜์–ด ์žˆ๊ฑฐ๋‚˜, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋„์ค‘์— ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ฑ„์›Œ ๋„ฃ์–ด์•ผ ํ•  ๋•Œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์ƒ ์œ ์šฉํ•จ.

โ—† ์„ ์–ธ๊ณผ ๋™์‹œ์— ํ• ๋‹น ๋ฐ ์ดˆ๊ธฐํ™” (๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹)

  • ๊ตฌ๋™ ๋งค์ปค๋‹ˆ์ฆ˜:
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ˆซ์ž๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์Œ.
    • ์ค‘๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด๊ฐ„ ๊ฐ์ฒด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์Šค์Šค๋กœ ์นด์šดํŠธํ•˜์—ฌ ํž™(Heap) ์˜์—ญ์— ๋”ฑ ๋งž๋Š” ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ์ž๋™์œผ๋กœ ํŒŒ๋‚ด๊ณ  ์ฆ‰์‹œ ์ฃผ์†Œ๋“ค์„ ์—ฐ๊ฒฐํ•จ.
  • ์ฝ”๋“œ ๊ตฌ์กฐ (๋‘ ๊ฐ€์ง€ ๋ฌธ๋ฒ• ํ‘œํ˜„):
  • Java
     
    // ํ‘œํ˜„ ๋ฐฉ์‹ โ‘ : ํ‘œ์ค€ ๋ฌธ๋ฒ•
    Student[] arr1 = new Student[] {
        new Student("ํ™๊ธธ๋™", 20),
        new Student("์ด์ˆœ์‹ ", 30),
        new Student("์œ ๊ด€์ˆœ", 18)
    };
    
    // ํ‘œํ˜„ ๋ฐฉ์‹ โ‘ก: ์ถ•์•ฝ ๋ฌธ๋ฒ• (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋จ)
    Student[] arr2 = {
        new Student("ํ™๊ธธ๋™", 20),
        new Student("์ด์ˆœ์‹ ", 30),
        new Student("์œ ๊ด€์ˆœ", 18)
    };
    
  • ์žฅ์  ๋ฐ ํŠน์ง•:
    • ์ฝ”๋“œ๊ฐ€ ๊ทน๋„๋กœ ๊ฐ„๊ฒฐํ•ด์ง€๋ฉฐ ๊ฐ€๋…์„ฑ์ด ๋†’์Œ.
    • ๋„ฃ์–ด์•ผ ํ•  ๋ฐ์ดํ„ฐ ์•Œ๋งน์ด๋“ค์ด ์‹คํ–‰ ์ „์— ์ด๋ฏธ 100% ํ™•์ •๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ€์žฅ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜์ž„.
    • โš ๏ธ ์ฃผ์˜ ์‚ฌํ•ญ: ์ถ•์•ฝ ๋ฌธ๋ฒ•(๋ฐฉ์‹ โ‘ก)์€ ๋ฐ˜๋“œ์‹œ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋งŒ ์ž‘๋™ํ•จ. ์„ ์–ธ์„ ๋ฏธ๋ฆฌ ์ชผ๊ฐœ๋†“๊ณ  ๋‚˜์ค‘์— ๋Œ€์ž…ํ•  ๋•Œ๋Š” ์ถ•์•ฝ ๋ฌธ๋ฒ•์„ ์“ธ ์ˆ˜ ์—†์œผ๋ฉฐ, ๋ฌด์กฐ๊ฑด new Student[]๋ฅผ ๋ถ™์—ฌ์•ผ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์Œ.

โ—† ๋‘ ๋ฐฉ์‹์˜ ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ฐจ์ด์  ์š”์•ฝ

  • ์ธ๋ฑ์Šค ์ดˆ๊ธฐํ™”: ๋ฐฐ์—ด ๊ณต๊ฐ„ ํ™•๋ณด โžก๏ธ ๋นˆ ๊ณต๊ฐ„(null) ์ƒํƒœ ์กด์žฌ โžก๏ธ ํ•„์š”ํ•  ๋•Œ ์ธ๋ฑ์Šค๋กœ ์ฃผ์†Œ ์‚ฝ์ž…. (๊ณต๊ฐ„๊ณผ ์•Œ๋งน์ด ์ƒ์„ฑ์ด ๋ถ„๋ฆฌ๋จ)
  • ์„ ์–ธ๊ณผ ๋™์‹œ ์ดˆ๊ธฐํ™”: ์•Œ๋งน์ด ๊ฐœ์ˆ˜ ํŒŒ์•… โžก๏ธ ๋”ฑ ๋งž๋Š” ๊ณต๊ฐ„ ์ž๋™ ์ƒ์„ฑ โžก๏ธ ๋™์‹œ ๋งคํ•‘. (๊ณต๊ฐ„๊ณผ ์•Œ๋งน์ด ์ƒ์„ฑ์ด ๋‹จ ํ•œ ์žฅ์˜ ์‹œํ€€์Šค๋กœ ๋๋‚จ)
  • ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š” ํ•œ ์ค„์˜ ์ฝ”๋“œ ์•ˆ์—์„œ ๋ฐฐ์—ด ์ƒ์ž ์ƒ์„ฑ๊ณผ ์‹ค์ œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋Œ€์ž…์„ ์ค‘๊ด„ํ˜ธ { }๋ฅผ ์ด์šฉํ•ด ํ•œ ๋ฒˆ์— ๋๋‚ด๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์ž„.
  • ๋ฐฐ์—ด์˜ ์ „์ฒด ๊ณต๊ฐ„(ํฌ๊ธฐ)์„ ๋จผ์ € ํž™(Heap) ์˜์—ญ์— ํŒŒ๋†“์€ ๋’ค, ๊ฐ ๋ฐฉ์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ์ธ ์ธ๋ฑ์Šค([0], [1], [2]...)๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ง‘์–ด๋„ฃ๋Š” ๋ฐฉ์‹์ž„.
  • ๊ฐ๊ฐ์˜ ๊ตฌ๋™ ๋ฐฉ์‹๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ธฐํ˜ธ์‹์œผ๋กœ ๋ช…ํ™•ํžˆ ํ•ด์ฒดํ•˜๊ฒ ์Œ.