Stack, Queue

Dec 19, 2023
Stack, Queue

JVM ๊ตฌ์กฐ

๐Ÿ’ก
Stack๊ณผ Queue๋Š” ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์‹คํ–‰๋  ๋•Œ ์ž ๊น ์ƒ๊ฒผ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค. Stack์€ ์ž„์‹œ ์ €์žฅ์†Œ์ด๊ณ  Queue๋Š” ์‹คํ–‰๋  ๋ชฉ๋ก์„ ๋Œ€๊ธฐ์‹œํ‚ค๋Š” ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
 
package ex04.test; public class ScopeEx01 { int n1 = 1;// heap static int n2 = 2; //static static void m8() { int n8 = 8; } static void m1() { // int n1 = 10;//stack // System.out.println("m1: " + n1); // ์œ„์— int n1 = 10; ์ด ์—†๋‹ค๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ์ˆ˜ ์—†๋‹ค. 5ํ–‰์˜ int n1 = 1;์€ static์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. System.out.println(); } void m2() { System.out.println("m2: " + n1); System.out.println("์ด๊ฑฐ ๋˜๋‚˜? " + n2); } // ๋ฉ”์ธ ์‹œ์ž‘ ์ „์— static์— ๋ณ€์ˆ˜ n2์™€ ๋ฉ”์„œ๋“œ m1์ด ๋กœ๋“œ๋˜์–ด ์žˆ์Œ. public static void main(String[] args) { System.out.println(1); m1(); // return์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ๋กœ ์˜ค๊ณ , ์—†์œผ๋ฉด ๋‹ค์Œ ์ค„๋กœ ๊ฐ„๋‹ค. System.out.println(2); ScopeEx01 sc = new ScopeEx01(); // static์ด ๋ถ™์–ด ์žˆ์ง€ ์•Š์€ ๋ชจ๋“  ๊ฒƒ์ด ๋œธ. ๊ทธ๋ƒฅ ๋‚จ๋Š” ๊ณต๊ฐ„ ์ฐพ์•„์„œ ๋œธ. // main stack์— ๋œฌ sc๋Š” heap์˜ ์ฃผ์†Œ.(์ฐธ์กฐ ๋ณ€์ˆ˜) System.out.println(sc.n1); sc.m2(); // heap๊ณผ static์€ ๋– ์žˆ๊ธฐ๋งŒ ํ•˜๋‹ค๋ฉด ์–ด๋””์„œ๋“  ์ฐพ์„ ์ˆ˜ ์žˆ์–ด. ์–ด์ฐจํ”ผ ์ด๋ฆ„์€ ์ค‘๋ณต๋˜์ง€ ์•Š์„ํ…Œ๋‹ˆ๊นŒ. } }
 
 
 
์ƒ๋‹จ์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ๊ทธ๋ ธ์Œ
์ƒ๋‹จ์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ๊ทธ๋ ธ์Œ
 
๐Ÿ’ก
์ง€์—ญ๋ณ€์ˆ˜๋Š” stack์— ๋œฌ๋‹ค. ์‹คํ–‰์‹œ์—๋งŒ ์ƒ๊ฒผ๋‹ค ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†๋‹ค. ์ฐพ๊ณ  ์‹ถ๋‹ค๋ฉด return์„ ํ•˜๋ฉด ๋œ๋‹ค.
 
static (n2=2, m1(), main) -> ํด๋ž˜์Šค๋ช….์ฐพ๋Š”๊ฒƒ์˜์ด๋ฆ„ -> ํด๋ž˜์Šค๋ช…์„ ํ†ตํ•ด ์ ‘๊ทผ(์–ด๋””์—์„œ๋“ ์ง€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค) heap (n1=1, m2() -> static์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒƒ) -> ๋ ˆํผ๋Ÿฐ์Šค ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ(heap ๋ผ๋ฆฌ๋Š” ๊ฐ™์€ scope์ด๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ) stack (n5=10) -> ๊ฐ™์€ ์Šคํƒ์—์„œ๋งŒ ์ ‘๊ทผ(์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ)
 
Share article

hyeonjeong-jang-0302