JavaRush /Java Blog /Random-KO /Java์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ
vincent_vega
๋ ˆ๋ฒจ 24
Gainesville

Java์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
Java์˜ ๋ณ€์ˆ˜๋Š” ๊ฐ’์ด ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ€์ˆ˜๋ฅผ "์ „๋‹ฌ"ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ์ฐธ์กฐ ๋ฐ์ดํ„ฐ ์œ ํ˜•์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
Java์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ - 1
์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ฐ„๋‹จํ•œ ๊ณผ์ œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
int ั… = 3;
int ัƒ = ั…;
1ํ–‰์—์„œ๋Š” int ์œ ํ˜•์˜ ๋ณ€์ˆ˜ x๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ฐ’ 3์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. 2ํ–‰์—์„œ๋Š” int ์œ ํ˜•์˜ ๋ณ€์ˆ˜ y๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋ณ€์ˆ˜ x ์˜ ๊ฐ’์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค . ๋ฏธ๋ž˜์—๋Š” ๋ณ€์ˆ˜ x ๊ฐ€ y ์— ์–ด๋–ค ์‹์œผ๋กœ๋“  ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . Java๋Š” x (3) ์˜ ๊ฐ’์„ ๋ณต์‚ฌ ํ•˜๊ณ  ํ•ด๋‹น ๋ณต์‚ฌ๋ณธ์„ y ์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค . ์ด๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ƒˆ ๋ณ€์ˆ˜์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„์‹ y = x; " x๋ฅผ y ์— ์“ฐ๊ธฐ"๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ์ด๋Š” " x ๋‚ด๋ถ€์˜ ๊ฐ’์„ ๋ณต์‚ฌ ํ•˜๊ณ  ํ•ด๋‹น ๋ณต์‚ฌ๋ณธ์„ y ์— ์“ด๋‹ค "๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋ณ€๊ฒฝํ•˜๋ฉด y :
ัƒ = 34;
์ด๊ฒƒ์ด x ์— ์˜ํ–ฅ์„ ๋ฏธ์น ๊นŒ์š” ? ๋‹น์—ฐํžˆ ์•„๋‹ˆ์ง€. x ์˜ ๊ฐ’์€ ์—ฌ์ „ํžˆ โ€‹โ€‹3์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— x๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค .
ั… = 90;
์ด๊ฒƒ์ด y ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น ๊นŒ์š” ? ์•ˆ ๋ผ์š”. ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„ ํ›„์—๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค(๊ฐ’ ๋ณต์‚ฌ). ์ฐธ์กฐ ์œ ํ˜•์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”? ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ทœ์น™์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋งํฌ๋Š” ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋งํฌ์˜ ๋ณต์‚ฌ๋ณธ์„ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ด๋ ‡๊ฒŒ ๋งํ•œ๋‹ค๋ฉด:
Cat A = new Cat ();
Cat B = A;
๋งํฌ A๊ฐ€ ๋งํฌ B ๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ์ฒด์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๊ฐœ์ฒด๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋™์ผํ•œ Cat ๊ฐ์ฒด๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ฐธ์กฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ์ด์ œ ๋ฉ”์„œ๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Java๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋‚˜. ์ด๋Š” "๊ฐ’์„ ๋ณต์‚ฌํ•˜๊ณ  ๋ณต์‚ฌ๋ณธ์„ ์ „๋‹ฌํ•œ๋‹ค"๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๊ฒฝ์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
int ั… = 5;
doStuff (ั…); / / ะŸะตั€ะตะดะฐั‚ัŒ ะบะพะฟะธัŽ ั… (meaning 5) ะฒ ะผะตั‚ะพะด doStuff
doStuff ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
void doStuff (int ัƒ) {

   / / ะ”ะตะนัั‚ะฒะธั ั 'y'
}
x ๊ฐ’์˜ ๋ณต์‚ฌ๋ณธ , ์ฆ‰ 5๊ฐ€ doStuff() ๋ฉ”์„œ๋“œ ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค . doStuff() ๋ฉ”์„œ๋“œ์—๋Š” y ๋ผ๋Š” ์ž์ฒด ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . y ๋ณ€์ˆ˜๋Š” ์ƒˆ๋กญ๊ณ  ๋‹ค๋ฅธ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. x ๋ฅผ ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌํ•˜๋Š” ์‹œ์ ์— x ์— ์žˆ๋˜ ๋‚ด์šฉ์˜ ๋ณต์‚ฌ๋ณธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค . ์ด์ œ๋ถ€ํ„ฐ y ์™€ x๋Š” ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. y ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ x ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
void doStuff (int ัƒ) {

   ัƒ = 27; / / ะญั‚ะพ ะฝะต ะฒะปะธัะตั‚ ะฝะฐ 'ั…'
}
๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. x ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด y ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ์ด ๊ฒฝ์šฐ x ๊ฐ€ ํ•œ ์œ ์ผํ•œ ์ผ์€ ํ•ด๋‹น ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ doStuff() ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค . "๊ฐ’ ์ „๋‹ฌ"์€ ์ฐธ์กฐ์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ๋„ˆ๋ฌด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด "Java๋Š” ๊ธฐ๋ณธ ์œ ํ˜•์„ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Java๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ˜ํ…์ธ ์˜ ๋ณต์‚ฌ๋ณธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ˜ํ…์ธ ์˜ ์‚ฌ๋ณธ๋„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งํฌ ๋‚ด์šฉ์ด ๋ญ”๊ฐ€์š”? ๋ฆฌ๋ชจ์ฝ˜. ์‹œ์„ค์„ ๊ด€๋ฆฌ/์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์„ค์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•˜๋ฉด ์ฐธ์กฐ์˜ ๋ณต์‚ฌ๋ณธ์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ์ œ์–ด ํด๋ก . ๊ทธ ๋ฌผ์ฒด๋Š” ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์ด ๋งŒ๋“ค์–ด์กŒ๋˜ ๋”๋ฏธ โ€‹โ€‹์†์— ์•‰์•„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฆฌ๋ชจ์ฝ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์„ค์—์„œ๋Š” ์ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฆฌ๋ชจ์ฝ˜์ด "ํ”„๋กœ๊ทธ๋žจ"๋˜์–ด ์žˆ๋Š”์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ์œ ์ผํ•œ ์‚ฌ๋žŒ์€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ฐ€์™€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ธ ๋‹น์‹ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์ด ๋งํ•  ๋•Œ :
Cat A = new Cat ();
doStuff (ะ);

void doStuff (Cat B) {

   / / ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต B
}
Cat ๊ฐœ์ฒด ๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋‘ ๊ฐœ์˜ ์›๊ฒฉ ์ œ์–ด(๋งํฌ)๊ฐ€ ๋™์ผํ•œ Cat ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์ด์ œ B๊ฐ€ Cat ๊ฐœ์ฒด ์— ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์€ A ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” Cat ์— ์˜ํ–ฅ์„ ์ฃผ์ง€๋งŒ A ์˜ ๋‚ด์šฉ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ! ์ƒˆ ๋งํฌ B ( A ์—์„œ ์ง์ ‘ ๋ณต์‚ฌ๋จ )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cat์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ A๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋„๋Œ€์ฒด ๋ฌด์Šจ ๋œป์ด์•ผ? A ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ A ์˜ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค . ์ด๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋‚˜ null ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค . ๋”ฐ๋ผ์„œ B ์˜ ์ฐธ์กฐ ( B ๊ฐ€ ์ฐธ์กฐ ํ•˜๋Š” ์‹ค์ œ Cat ๊ฐ์ฒด ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฐธ์กฐ ์ž์ฒด์˜ ๊ฐ’)๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด A ์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๊ทธ ๋ฐ˜๋Œ€. ๊ทธ๋ž˜์„œ:
Cat A = new Cat ();
doStuff (ะ);

void doStuff (Cat B) {

   B = new Cat (); / / ะะต ะฟะพะฒะปะธัะตั‚ ะฝะฐ ััั‹ะปะบัƒ A
}
์ด๋Š” ๋‹จ์ˆœํžˆ B๊ฐ€ ๋‹ค๋ฅธ ๊ฐœ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. A ๋Š” ์—ฌ์ „ํžˆ ํ–‰๋ณตํ•˜๋‹ค. ๊ทธ๋Ÿผ ์ œ ๋ง์„ ๋”ฐ๋ผํ•˜์„ธ์š”. Java๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. (์ข‹์•„์š”, ํ•œ ๋ฒˆ ๋”... ๋Š๋‚Œ์„ ๊ฐ€์ง€๊ณ ์š”.) Java๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์น˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ๊ฐ’์˜ ๋ณต์‚ฌ๋ณธ์„ ์ „๋‹ฌํ•˜๊ณ , ๊ฐœ์ฒด ์ฐธ์กฐ์˜ ๊ฒฝ์šฐ ์ฐธ์กฐ ๋ณต์‚ฌ๋ณธ(์›๊ฒฉ ์ œ์–ด)์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ฒฐ์ฝ” ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๋Š” ํž™์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋‚˜. ์ด์ œ ์ปคํ”ผ๋ฅผ ๋“ฌ๋ฟ ๋“์—ฌ์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”! ์›๋ณธ ๊ธฐ์‚ฌ.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION