[JAVA] 11. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ2. return๋ฌธ, JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

2022. 4. 15. 15:29ใ†JAVA/์ž๋ฐ”์˜ ์ •์„

728x90

 

1๏ธโƒฃ return ๋ฌธ

return๋ฌธ์€ ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค.

๋ชจ๋“  ๋ฉ”์„œ๋“œ์—๋Š” ์ ์–ด๋„ ํ•˜๋‚˜์˜ return๋ฌธ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด void์ธ ๊ฒฝ์šฐ์—๋Š” return๋ฌธ์ด ์—†์–ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋˜ ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”์„œ๋“œ์˜ ๋งˆ์ง€๋ง‰์— return;์„ ์ž๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

๋ฐ˜ํ™˜ํƒ€์ž…์ด void๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ์ฆ‰ ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ return๋ฌธ์ด ์žˆ์–ด์•ผ ํ•˜๊ณ , return๋ฌธ์ด ์—†์œผ๋ฉด ์ปดํŒŒ์ผ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

int add(int x, int y) {
	int result = x + y;
    return result;
}

->  ๋ฐ˜๋“œ์‹œ return๋ฌธ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. 

 

 

โ—๏ธ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ 

๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„๋ถ€{}๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ œ์ผ ๋จผ์ € ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ ์ ˆํ•œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

float divide(int x, int y) { 
	if( y == 0) {
    	System.out.println("0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
        return 0;
    }
    return x / (float) y;
}

-> 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์‚ฐ ์ „์— y ์˜ ๊ฐ’์ด 0์ธ์ง€๋ฅผ ํ™•์ธํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ y์˜ ๊ฐ’์ด 0์ด๋ฉด ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๊ธฐ๊นจ๋ฌธ์— return๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ๋น ์ ธ๋‚˜์™€์•ผํ•œ๋‹ค. 

 

์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋„˜์–ด์˜จ๋‹ค๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณด์ •ํ•˜๊ฑฐ๋‚˜, ๋ณด์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด return๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ๋กœ ๋Œ์•„๊ฐ€์•ผํ•œ๋‹ค. 

 

 

2๏ธโƒฃ JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ 

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด JVM์€ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  JVM์€ ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์šฉ๋„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•œ๋‹ค. 

 

1. ๋ฉ”์„œ๋“œ ์˜์—ญ method area

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด JVM์€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ํŒŒ์ผ(*.class)์„ ์ฝ์–ด์„œ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด(ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ)๋ฅผ ์ด๊ณณ์— ์ €์žฅํ•œ๋‹ค. 

์ด๋•Œ ๊ทธ ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋„ ์ด ์˜์—ญ์— ํ•จ๊ป˜ ์ƒ์„ฑ๋œ๋‹ค. 

 

2. ํž™ heap

์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณต๊ฐ„, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค๋Š” ๋ชจ๋‘ ์ด๊ณณ์— ์ƒ์„ฑ๋œ๋‹ค. ์ฆ‰, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋“ค์ด ์ƒ์„ฑ๋˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. 

 

3. ํ˜ธ์ถœ ์Šคํƒ call stack ๋˜๋Š” execution stack

ํ˜ธ์ถœ์Šคํƒ์€ ๋ฉ”์„œ๋“œ์˜ ์ž‘์—…์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•œ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด, ํ˜ธ์ถœ์Šคํƒ์— ํ˜ธ์ถœ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋ฉฐ, ์ด ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ์ง€์—ญ ๋ณ€์ˆ˜(๋งค๊ฐœ๋ณ€์ˆ˜ ํฌํ•จ)๋“ค๊ณผ ์—ฐ์‚ฐ์˜ ์ค‘๊ฐ„๊ฒฐ๊ณผ ๋“ฑ์„ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘์—…์„ ๋งˆ์น˜๋ฉด ํ• ๋‹น๋˜์—ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์€ ๋ฐ˜ํ™˜๋˜์–ด ๋น„์›Œ์ง„๋‹ค. 

 

ํ˜ธ์ถœ์Šคํƒ 
- ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์Šคํƒ์— ํ• ๋‹น๋ฐ›๋Š”๋‹ค. 
- ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰์„ ๋งˆ์น˜๊ณ ๋‚˜๋ฉด ์‚ฌ์šฉํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค. 
- ํ˜ธ์ถœ์Šคํƒ์˜ ์ œ์ผ ์œ„์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฉ”์„œ๋“œ์ด๋‹ค. 
- ์•„๋ž˜์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ”๋กœ ์œ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค. 

ํ˜ธ์ถœ์Šคํƒ์˜ ์ œ์ผ ์ƒ์œ„์— ์œ„์น˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฉ”์„œ๋“œ์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋Œ€๊ธฐ์ƒํƒœ์— ์žˆ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90