inblog logo
|
vosw1
    Java

    Static , Heap, Stack

    Dec 28, 2023
    Static , Heap, Stack

    πŸ’‘
    .class νŒŒμΌμ„ λ“€κ³  μ™€μ„œ μ‹€ν–‰ν• λ•Œ
    1. static 찾음
    1. main μ°Ύμ•„ μ‹€ν–‰
     

    λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš© β†’ κ΄€λ¦¬ν•˜λŠ” 방법

     
    λ©”λͺ¨λ¦¬ : μ €μž₯ μ˜μ—­, μ˜μ—­μ— λŒ€ν•œ μ£Όμ†Œ(λ²ˆμ§€)κ°€ 있음
     
    λ…Όλ¦¬μ μœΌλ‘œ μ˜μ—­μ„ κ΅¬λΆ„ν•΄μ„œ μ‚¬μš©ν•¨
     

    Static : μ‹œμž‘μ „λΆ€ν„° λ©”λͺ¨λ¦¬μ— 띄움


    package ex04; /** * JVM이 μ‹œμž‘ν• λ•Œ * 1. static 찾음 -> age, main * 2. main μ°Ύμ•„μ„œ μ‹€ν–‰ */ class Person1{ static int age = 20; char gender = 'μ—¬'; // μ›μ‹œ μžλ£Œν˜•(primitive data type) // μ»€μŠ€ν…€ μžλ£Œν˜•(λ‚΄κ°€ λ§Œλ“  μžλ£Œν˜•) } public class MemEx01 { public static void main(String[] args) { System.out.println(Person1.age); } }
    notion image
    πŸ’‘
    νŠΉμ§• : 정적 ν• λ‹Ή
    main이 μ‹€ν–‰λ˜κΈ° 전에 λ©”λͺ¨λ¦¬μ— 뜸
    생λͺ…μ£ΌκΈ°κ°€ κ°€μž₯ κΈΊ
    클래슀λͺ….λ³€μˆ˜λͺ… : static 곡간은 μ–΄λ””μ„œλ‚˜ 찾을 수 있음
    ν΄λž˜μŠ€μ— 있으면 클래슀λͺ…을 μƒλž΅ κ°€λŠ₯함
    λ©”λͺ¨λ¦¬λ₯Ό 많이 μ‚¬μš©ν•¨

    Heap : λ™μ μœΌλ‘œ 원할 λ•Œ 띄움


    package ex04; class Person2{ int age = 10; char gender = '남'; } public class MemEx02 { public static void main(String[] args) { System.out.println("1λ…„ 지남"); System.out.println("2λ…„ 지남"); System.out.println("3λ…„ 지남"); Person2 p2 = new Person2(); // νƒ€μž…λͺ… + λ³€μˆ˜ = new 클래슀λͺ…; System.out.println(p2.age); System.out.println(p2.gender); System.out.println("메인 μ’…λ£Œ"); } }
    notion image
    notion image
    μ•‘μ„ΈμŠ€ :
    νŠΉμ§• : 동적 ν• λ‹Ή
    λ‚΄κ°€ 원할 λ•Œ λ©”λͺ¨λ¦¬μ— 띄움
    static 보닀 생λͺ…μ£ΌκΈ°κ°€ 짧음
     
    heap μ°ΎλŠ” 방법
    μ—¬λŸ¬λ²ˆ λ„μšΈ 수 있음 > κ°€λ₯΄ν‚€λŠ” λ³€μˆ˜κ°€ ν•„μš”ν•¨
    νƒ€μž…λͺ… + λ³€μˆ˜ = new 클래슀λͺ…(); // 클래슀 μ•ˆμ— μžˆλŠ” λ‚΄μš©μ„ λ©”λͺ¨λ¦¬μ— 띄움

    Stack : λ©”μ„œλ“œκ°€ 싀행될 λ•Œ 띄움


    package ex04; public class ScopeEx01 { int n1 = 1; static int n2 =2; static void m1(){ int n1 = 10; System.out.println("m1 : " + n1); // n1 = 10 } void m2(){ System.out.println("m2 : " + n1); // n1 = 1 } //main μ‹œμž‘μ „μ— static에 n2 λ³€μˆ˜μ™€ n1 λ©”μ„œλ“œ μ΄λ¦„λ§Œ λ‘œλ“œλ˜μ–΄ 있음 public static void main(String[] args) { System.out.println("1"); m1(); System.out.println("2"); } }
     
    πŸ’‘
    Stack : μž„μ‹œ μ €μž₯을 μœ„ν•΄ λ§Œλ“€μ–΄μ§
    Queue : μˆœμ„œλŒ€λ‘œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§
    (데이터 μ €μž₯x)
    Scope : ν•΄λ‹Ή λ³€μˆ˜μ˜ μ‚¬μš© λ²”μœ„
     
    πŸ’‘
    μ„œλ‘œμ˜ stack에 접근이 μ•ˆλ¨
    잠깐 λ–΄λ‹€ μ‚¬λΌμ§€λ‹ˆκΉŒ μ™ΈλΆ€μ—μ„œ 찾을 수 μ—†μŒ
    return으둜 전달 λ°›μ•„μ•Ό 함/main λ³€μˆ˜κ°€ 됨
     
    πŸ’‘
    생λͺ…μ£ΌκΈ° : static < heap< statick
    πŸ’‘
    1. 클래슀 λ‘œλ“œ(λ©”λͺ¨λ¦¬μ— ν΄λž˜μŠ€κ°€ 뜸)
    1. static μ°ΎκΈ°
    클래슀 λ³„λ‘œ μ˜μ—­μ΄ λ‚˜λ‰¨
    μ›λž˜λŠ” ν”„λ‘œμ νŠΈ μ•ˆμ— μžˆλŠ” λͺ¨λ“  static이 뜸
    1. main을 μ°Ύμ•„ μ‹€ν–‰
    main의 근거
    static : 싀행전에 λ©”λͺ¨λ¦¬μ— λ–  있음
    public : 외뢀에 μžˆλŠ” JVM이 μ ‘κ·Ό κ°€λŠ₯
    1. mainλ©”μ„œλ“œκ°€ 열리면 main Queueκ°€ μ‹€ν–‰
    put : 라인듀이 λ‹΄κΉ€
    pop : λλ‚˜μ„œ λ©”λͺ¨λ¦¬μ—μ„œ CPU둜 κ°€μ„œ λͺ¨λ‹ˆν„°μ— 좜λ ₯됨
    notion image
    πŸ’‘
    μ €μž₯λ˜λŠ” 곡간이 닀름
     
    package ex04; public class ScopeEx01 { int n1 = 1; static int n2 =2; static void m1(){ int n1 = 10; System.out.println("m1 : " + n1); // n1 = 10 } void m2(){ System.out.println("m2 : " + n1); // n1 = 1 } //main μ‹œμž‘μ „μ— static에 n2 λ³€μˆ˜μ™€ n1 λ©”μ„œλ“œ μ΄λ¦„λ§Œ λ‘œλ“œλ˜μ–΄ 있음 public static void main(String[] args) { System.out.println("1"); m1(); System.out.println("2"); ScopeEx01 sc = new ScopeEx01(); sc.m2(); } }
    notion image
     
    λ©”μ„œλ“œ λ‚΄λΆ€μ˜ λ³€μˆ˜ : μ§€μ—­λ³€μˆ˜ / 생λͺ…μ£ΌκΈ°κ°€ κ°€μž₯ 짧음
    λ©”μ„œλ“œλŠ” μ΄λ¦„λ§Œ 뜸
    μ°Έμ‘°λ³€μˆ˜ : μ£Όμ†Œλ₯Ό κ°€μ§€κ³  있음 / *λ₯Ό λΆ™μž„
    heapμ΄λž‘ static은 λ‹€ 찾을 수 있음

    같은 scope에 μžˆλŠ” data 정리


    static (n2 =2, m1(), main)
    μ–΄λ””μ—μ„œλ“ μ§€ μ ‘κ·Ό κ°€λŠ₯
    heap ( n1=1, m2())
    static이 μ•ˆ 적힌 λͺ¨λ“  것
    heapλΌλ¦¬λŠ” 같은 scopeμ—¬μ„œ 접근이 κ°€λŠ₯
    λ©”μ„œλ“œμ˜ 싀행은 heap
    stack (n5=10)
    λ©”μ„œλ“œμ˜ λ‚΄λΆ€κ°€ μ €μž₯만 됨
    μ™ΈλΆ€ μ ‘κ·Ό λΆˆκ°€λŠ₯
    πŸ’‘
    데이터λ₯Ό μ €μž₯ν•˜λŠ” 것과 μ°Ύμ•„ μ‹€ν–‰ν•˜λŠ” μœ„μΉ˜κ°€ 닀름
    Share article

    vosw1

    RSSΒ·Powered by Inblog