Programming/Java

[Java] ์ž๋ฐ”์—์„œ ์ธ์ž์˜ ์‹ค์ œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ด์œ 

Space_Jin 2022. 4. 5. 23:39
728x90
๋ฐ˜์‘ํ˜•

Java๋Š” ์ธ์ž๋กœ ๋„˜๊ฒจ์ค€ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์˜ ์‹ค์ œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

add ํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ๋ฐ›๋Š” model ๊ฐ์ฒด ์•ˆ์˜ number ํ•„๋“œ์˜ ๊ฐ’์„ 1 ๋”ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์ฒ˜์Œ์— ์žˆ๋Š” model ๊ฐ์ฒด๋ฅผ add ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋„˜๊ฒจ์„œ ์‹คํ–‰ํ•˜๋ฉด ์ฒ˜์Œ model์˜ ํ•„๋“œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

C์–ธ์–ด๋‚˜ python์—์„œ ํ•จ์ˆ˜์— ์ธ์ž๋ฅผ ๋„˜๊ธฐ๋ฉด ์‹ค์ œ ๊ฐ’(ํ˜น์€ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’)์ด ์•„๋‹Œ ์ธ์ž์˜ ๊ฐ’์„ ๋ณต์‚ฌ ๊ฐ’์ด ๋„˜์–ด๊ฐ„๋‹ค.

์ด๋ ‡๊ฒŒ ์›๋ณธ์˜ ๋ณต์‚ฌ ๊ฐ’์„ ์ธ์ž์— ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ "Call By Value"๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์‹ค์ œ๋กœ ์›๋ณธ A๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ addํ•จ์ˆ˜์˜ return ๊ฐ’์ธ B ๋‹ค์‹œ ๋Œ€์ž…ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

Model model = new Model()

model = add(model)	// add ํ•จ์ˆ˜์˜ return์€ Model classโ€‹

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๋ถˆํŽธํ•œ ์ ์ด ๋งŽ๋‹ค.

 

๋งŒ์•ฝ, add ํ•จ์ˆ˜์˜ ์—ญํ• ์ด model์˜ number ํ•„๋“œ ๊ฐ’์— ํŠน์ • ๊ฐ’์„ ๋”ํ•œ ํ›„ "ok"๋ผ๋Š” ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์œ„ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

ํ•˜์ง€๋งŒ, java์—์„œ ์ฝ”๋“œ๋ฅผ ์งœ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ์ฒด์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ฉด ์›๋ณธ์˜ ๊ฐ’๋„ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค.

 

๐Ÿ“Œ ๊ทธ๋ ‡๋‹ค๋ฉด java๋Š” ์ฐธ์กฐ ๊ฐ’์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” "Call By Reference" ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€?

๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ํ•œ๋‹ค.

 

java๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ call by value ๋ฐฉ์‹์„ ์ง€์›ํ•œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์™œ ์›๋ณธ์˜ ๊ฐ’์ด ๋ณ€ํ• ๊นŒ?

 

java๋Š” ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ค„ ๋•Œ, ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์˜ ๋ณต์‚ฌ ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์œ„ ๊ทธ๋ฆผ์„ ์˜ˆ์‹œ๋กœ ๋“ค๋ฉด ์›๋ณธ A ์—ญ์‹œ ์‹ค์ œ model ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

A๋ฅผ addํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด B๋ผ๋Š” ๋ณ€์ˆ˜์— A๊ฐ’์˜ ๋ณต์‚ฌ ๊ฐ’์„ ๋‹ด๊ณ  B๊ฐ’์„ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋•Œ, B๋ฅผ ํ†ตํ•ด ํ•„๋“œ ๊ฐ’์— ์ ‘๊ทผํ•˜๋ฉด A์™€ ๋™์ผํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ model ๊ฐ์ฒด์˜ ํ•„๋“œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

์—ฌ๋Ÿฌ ์–ธ์–ด๋ฅผ ์„ž์–ด์„œ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ๋ฌธ๋“ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•˜๋ฉด์„œ ๊ธฐ์–ต์— ๋” ์˜ค๋ž˜ ๋‚จ์•˜์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

 

์กฐ๊ธˆ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ํ•„์š”ํ•˜๋ฉด ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•„์ฃผ ์ž˜ ์ •๋ฆฌํ•ด์ฃผ์…”์„œ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค^^.

 

[Java] ์ž๋ฐ”๊ฐ€ ์–ธ์ œ๋‚˜ Call By Value์ธ ์ด์œ  (Call By Reference X)

Intro ์‹œ์ž‘ํ•˜๊ธฐ ์•ž์„œ CS์ด๋ก ์—์„œ๋Š” "Call by value"์™€ "Call by reference"๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์“ธ๋ชจ์—†๋‹ค๊ณ  ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด "Call By Reference"์€ ์ด์ œ ํŠธ๋ Œ๋“œ์— ๋’ค์ณ์ง„ ๊ธฐ์ˆ ๋กœ ์„ ํ˜ธ๋„ ๊ต‰์žฅํžˆ ๋‚ฎ์•„์ ธ ์ตœ์‹ ..

loosie.tistory.com

728x90
๋ฐ˜์‘ํ˜•