Scope ,Queus, Stack

Dec 21, 2023
Scope  ,Queus, Stack
 

1. Scope

 
πŸ’‘
ν”„λ‘œκ·Έλž¨μ΄ μ„ μ–Έν•œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” λ²”μœ„
 
 
notion image
 
μžλ°”κ°€ jvm 을 톡해 μ‹€ν–‰λ˜λŠ” 과정을 λŒ€λž΅μ μœΌλ‘œ κ·Έλ Έλ‹€.
 
public class ScopeEx01 { int n1 = 1; static int n2 = 5; static void m1() { int n3 = 10; System.out.println(n1); System.out.println(n2); System.out.println(n3); } void m2() { } public static void main(String[] args) { } }
 
notion image
 
ν•œ 클래슀 λ‚΄μ—μ„œ 3개의 λ³€μˆ˜ n1,n2,n3 κ°€ μ„ μ–Έλ˜μ—ˆλ‹€.
μ΄λ•Œ λ©”μ„œλ“œ m1 μ—μ„œ λ³€μˆ˜λ₯Ό μž…λ ₯ν–ˆμ„ λ•Œ, n2와 n3 λŠ” μž…λ ₯이 λ˜μ§€λ§Œ n1은 μΈμ‹ν•˜μ§€ λͺ»ν•œλ‹€.
μ΄λŠ” ν΄λž˜μŠ€κ°€ 싀행될 λ•Œ κ°€μž₯ λ¨Όμ € static 곡간에 μžˆλŠ” 값은 ν΄λž˜μŠ€κ°€ μ‹€ν–‰λ˜λ©΄ 항상 λ– μžˆκΈ° λ•Œλ¬Έμ— 인식할 수 μžˆμ§€λ§Œ n1 값은 λ©”λͺ¨λ¦¬μ—μ„œ 찾을 수 μ—†λ‹€. μ΄λ•ŒλŠ” n1 값은 heap 을 톡해 λ™μž‘ μ‹œμΌœμ•Ό 인식할 수 μžˆλ‹€.
n3 값은 같은 λ©”μ„œλ“œ 내에 μžˆμ–΄ 인식 κ°€λŠ₯ν•˜λ‹€.
 

2. Quese 와 Stack

 
πŸ’‘
Quese : μžλ£Œκ°€ μˆœμ„œλŒ€λ‘œ 쀄을 지어 μ²˜λ¦¬λ˜λŠ” κ³Όμ •. μ„ μž…μ„ μΆœ 방식 Stack : 데이터λ₯Ό μŒ“μ•„λ†“λŠ” ν˜•νƒœμ˜ 자료 ꡬ쑰. κ°€μž₯ λ‚˜μ€‘μ— μŒ“μΈ 데이터가 κ°€μž₯ λ¨Όμ € μ‹€ν–‰λ˜λŠ” ν›„μž…μ„ μΆœ 방식
 
 
notion image
 
stack 은 static κ³Ό λ³„κ°œμ˜ μ €μž₯ 곡간이닀. 처음 .classκ°€ μ‹€ν–‰λ˜κ³  메인 λ©”μ„œλ“œκ°€ μ‹€ν–‰λ˜λ©΄ {} λ‚΄λΆ€μ˜ μ½”λ“œκ°€ μ‹€ν–‰λœλ‹€. Main queue 와 Main stack 이 μƒμ„±λœλ‹€.
Main queue λŠ” μžλ°”μ˜ 라인이 싀행될 λ•Œ μ½”λ“œμ˜ μˆœμ„œλŒ€λ‘œ μ§„ν–‰λœλ‹€.
 
ㅍpublic class ScopeEx01 { int n1 = 1; static int n2 = 5; static void m1() { int n3 = 10; //11번째 쀄 System.out.println(n3); //12번째 쀄 } void m2() { } public static void main(String[] args) { System.out.println(1); // 24번째 쀄 m1(); // 25번째 쀄 System.out.println(2); // 26번째 쀄 }
 
이런 메인 λ©”μ„œλ“œμ—μ„œ μ‹€ν–‰λ˜λ©΄ Main queueκ°€ μƒμ„±λ˜κ³ , μˆœμ„œλŒ€λ‘œ 24번째 μ€„μ˜ μ½”λ“œλ₯Ό cpu에 μ „λ‹¬ν•˜λŠ” 역할을 ν•œλ‹€.
그리고 25λ²ˆμ§Έκ°€ 되면 m1 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œλ‹€. 그러면 m1 λ©”μ„œλ“œ λ‚΄λΆ€μ˜ {} κ°€ μ‹€ν–‰λ˜κ³  μ΄λ•Œ m1 queus 와 m1 stack 이 μƒμ„±λœλ‹€.
 
 
m1 stack 에 λ³€μˆ˜ n3 이 μ €μž₯되고 m1 queus 이 11λ²ˆμ§Έμ€„ λΆ€ν„° μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λœλ‹€.
싀행이 μ™„λ£Œλ˜λ©΄ m1 queus κ³Ό m1 stack 은 사라진닀.
이후 메인 λ©”μ„œλ“œμ˜ 26번째 μ€„κΉŒμ§€ 싀행이 μ™„λ£Œλ˜λ©΄ Main queue 와 Main stack 이 사라지고 메인 λ©”μ„œλ“œλŠ” μ’…λ£Œλœλ‹€.
 
πŸ’‘
1. m1 λ©”μ„œλ“œ λ‚΄λΆ€μ˜ μ½”λ“œλŠ” 호좜된 μ΄ν›„μ—λ§Œ 확인할 수 μžˆλ‹€. κ·Έ μ „κΉŒμ§€λŠ” λ©”λͺ¨λ¦¬μ— m1 μ΄λΌλŠ” λ©”μ„œλ“œλ§Œ λ– μžˆλ‹€.
2. stack 은 λ©”μ„œλ“œκ°€ 호좜된 이후 μƒμ„±λ˜μ—ˆλ‹€κ°€ μ™„λ£Œ ν›„ 사라지기 λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ μ‚¬μš©μ— νš¨μœ¨μ μ΄λ‹€.
 
 
 
 
 
 
 
 
 
 
 
Share article

{CODE-RYU};