๋ฐ˜์‘ํ˜•

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค!

์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฒฐ๊ณผ๋กœ ํ™•์ธ!

 

package com.test.exam01;

public class Sample {
    
    /*
    ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜ --> ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
    ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ scope์€ ์ด ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ํด๋ž˜์Šค ์ „์ฒด์— ๋ฏธ์นœ๋‹ค.
    ๋‹จ, main method ๋‚ด์—์„œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์Šคํ„ด์Šค ์„ ์–ธ์ด ํ•„์š”ํ•˜๋‹ค.
    ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ lifetime์€ ์ด ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•  ๋•Œ๊นŒ์ง€...
    */
    int x, y; 
    
    /*
    ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€์— ์„ ์–ธ๋œ static ๋ณ€์ˆ˜ --> static ์ด ๋ถ™์œผ๋ฉด ํด๋ž˜์Šค ๋ณ€์ˆ˜!
    ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ scope ์€ ์ด ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ํด๋ž˜์Šค ์ „์ฒด์— ๋ฏธ์นœ๋‹ค.
     */
    static int result;

    void add1(int a, int b){  //method ์„ ์–ธ
        //a, b = parameter ๋งค๊ฐœ๋ณ€์ˆ˜ --> ์ง€์—ญ๋ณ€์ˆ˜(local variable)
        x = a; //x ๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ์ด๋ฏธ ์„ ์–ธ๋จ.
        //๋งค๊ฐœ๋ณ€์ˆ˜ a์˜ ๊ฐ’์ด ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ x์— ํ• ๋‹น๋œ๋‹ค.
        y = b;
        int sum = x+y; //์„ ์–ธ๊ณผ ๋™์‹œ์— ํ• ๋‹น. --> ์ดˆ๊ธฐํ™”
        result = 88; //class ๋ณ€์ˆ˜์— 88์„ ํ• ๋‹น.
        System.out.println("Result = "+ result);
        System.out.println("Sum = "+ sum);
    }
    
    void gob2(){ //์œ„์˜ add1 ์˜ a,b ๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์˜€๊ธฐ์—, ์—ฌ๊ธฐ์„œ ์จ๋„ ๋จ.
        int a = 3;
        int b = 4;
        System.out.println(a*b);
    }
    
    public static void main(String[] args){
        Sample obj = new Sample(); //sample ์€ class ์ด๋ฆ„. ์ธ์Šคํ„ด์Šค ์„ ์–ธ. ์ด๋ ‡๊ฒŒ ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•จ.
        //์ฐธ๊ณ ๋กœ obj. ์ณ์„œ ๋‚˜์˜ค๋Š” method์™€ ๋ณ€์ˆ˜๋“ค์€ ๋ชจ๋‘ sample ์ด๋ผ๋Š” class ๊ฐ€ ๊ฐ€์ง„ method์™€ ๋ณ€์ˆ˜๋“ค.
        obj.add1(10,20);
        System.out.println("X = "+obj.x); //obj.x ๋กœ ์ธ์Šคํ„ด์Šค ์„ ์–ธ์„ ํ•ด์คŒ.
        System.out.println("Y = "+obj.y);
        
        obj.gob2(); // 12๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ.
        System.out.println("Result = " + result); //class ๋ณ€์ˆ˜์ด๊ธฐ์—, ์„ ์–ธ์ด ํ•„์š” ์—†์–ด์„œ ๊ทธ๋ƒฅ result.
        
        result = 77;
        System.out.println("New Result = "+result); 

    }

}

 

 

์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ!

Result = 88
Sum = 30
X = 10
Y = 20
12
Result = 88
New Result = 77

 

 


 

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ์ฐจ์ด์ ์„ ํ‘œ๋กœ ์ •๋ฆฌํ•œ ๊ฒƒ!

 

+ ์ฐธ๊ณ ๋กœ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ์†ํ•œ๋‹ค!

ํŠน์ง• ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ (Instance Variable) ํด๋ž˜์Šค ๋ณ€์ˆ˜ (Class Variable)
์ •์˜ ๊ฐ์ฒด๋ณ„๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ณ€์ˆ˜ ํด๋ž˜์Šค์— ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜
ํ‚ค์›Œ๋“œ int x;, String name; static int result;, static String appName;
์ด๋ ‡๊ฒŒ static ์ด ๋ถ™์€ ๋ณ€์ˆ˜๊ฐ€ ํด๋ž˜์Šค ๋ณ€์ˆ˜!
๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜ ๊ฐ ๊ฐ์ฒด๋งˆ๋‹ค ๋ณ„๋„๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋จ ํด๋ž˜์Šค ๋กœ๋”ฉ ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ ๋ฒˆ๋งŒ ํ• ๋‹น๋จ
๊ฐ’์˜ ๊ณต์œ  ์—ฌ๋ถ€ ๊ฐ์ฒด๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ๊ฐ’์„ ๊ฐ€์ง ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ๊ฐ’์„ ๊ณต์œ ํ•จ (๋ฉ”๋ชจ๋ฆฌ ๊ฐ™์€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ)
์ ‘๊ทผ ๋ฐฉ๋ฒ• ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ (obj.x) ํด๋ž˜์Šค ์ด๋ฆ„์„ ํ†ตํ•ด ์ ‘๊ทผ (Sample.result)
์˜ˆ์‹œ Student name = new Student(); 
name.age = 10;
Sample.result = 100;
์ƒ์„ฑ ์‹œ์  ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ƒ์„ฑ๋จ ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ ์ƒ์„ฑ๋จ
์ˆ˜๋ช… ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์ƒ์„ฑ๋˜๊ณ  ์‚ฌ๋ผ์ง ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์œ ์ง€๋จ
์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ๊ฐ์ฒด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ๋•Œ ์‚ฌ์šฉ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด๋‚˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ๋•Œ ์‚ฌ์šฉ

 

์„ค๋ช…

  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜:
    • ๊ฐ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, Student ๊ฐ์ฒด๋งˆ๋‹ค name๊ณผ age๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๊ณ , ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ๋ณ€์ˆ˜๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ๋ณ€์ˆ˜:
    • ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    • ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์ด ๋ณ€์ˆ˜์˜ ๋™์ผํ•œ ๊ฐ’์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, result๋Š” Sample ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ํด๋ž˜์Šค ์ „์ฒด์— ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ‘์ž๊ธฐ ๊ถ๊ธˆํ–ˆ๋˜ ์ !

 

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ์‚ฌ๋ผ์ง„๋‹ค๊ณ  ํ•˜๋˜๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ฝ”๋“œ ๋‚ด์—์„œ ๊ฐ์ฒด๋ฅผ ์—†์•จ ์ˆ˜๋„ ์žˆ์„๊นŒ?

์•„๋ž˜ ์ ‘์€ ๊ธ€ ํ™•์ธ

๋”๋ณด๊ธฐ

์ž๋ฐ”์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘์ ์œผ๋กœ "์—†์• ๋Š”" ์ฝ”๋“œ๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ฐ์ฒด๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด๋ฅผ ์—†์• ๋Š” ๋ฐฉ๋ฒ•

  1. ๊ฐ์ฒด ์ฐธ์กฐ ํ•ด์ œ
    java
    ์ฝ”๋“œ ๋ณต์‚ฌ
    public class Example { public static void main(String[] args) { Sample obj = new Sample(); // ๊ฐ์ฒด ์ƒ์„ฑ obj.add(10, 20); // ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ obj = null; // ๊ฐ์ฒด ์ฐธ์กฐ ํ•ด์ œ // ์ด์ œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ด ๊ฐ์ฒด๋ฅผ ์ˆ˜๊ฑฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. } }
    ์ด ์ฝ”๋“œ์—์„œ obj ๋ณ€์ˆ˜์— null์„ ๋Œ€์ž…ํ•˜๋ฉด, ์›๋ž˜ obj๊ฐ€ ์ฐธ์กฐํ•˜๋˜ Sample ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ž๋ฐ”์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ด ๊ฐ์ฒด๋ฅผ ๋‚˜์ค‘์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ์ฒด๋ฅผ ์—†์• ๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๊ทธ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ง์ ‘ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ null๋กœ ์„ค์ •ํ•˜์—ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ˆ˜๊ฑฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ฐ•์ œ ํ˜ธ์ถœ (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)
    java
    ์ฝ”๋“œ ๋ณต์‚ฌ
    public class Example { public static void main(String[] args) { Sample obj = new Sample(); // ๊ฐ์ฒด ์ƒ์„ฑ obj.add(10, 20); // ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ obj = null; // ๊ฐ์ฒด ์ฐธ์กฐ ํ•ด์ œ System.gc(); // ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ฐ•์ œ ํ˜ธ์ถœ // ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ `obj` ๊ฐ์ฒด๋ฅผ ์ˆ˜๊ฑฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. } }
    System.gc()๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์š”์ฒญํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹คํ–‰๋ ์ง€ ์—ฌ๋ถ€๋Š” JVM์˜ ๊ฒฐ์ •์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ž๋ฐ”์—์„œ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๊ฐ•์ œ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ๋ณดํ†ต ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ž์›์„ ๋น„ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๊ฐ•์ œ๋กœ ํ˜ธ์ถœํ•˜๋ ค๋ฉด System.gc()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ

  • ๊ฐ์ฒด ์ฐธ์กฐ ํ•ด์ œ: ๊ฐ์ฒด๋ฅผ ๋” ์ด์ƒ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ฒŒ null๋กœ ์„ค์ •ํ•˜๋ฉด, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋‚˜์ค‘์— ์ด ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ฐ•์ œ ํ˜ธ์ถœ: System.gc()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๊ฐ•์ œ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ”๋Š” ์ž๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ž˜ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ฒœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ์—์„œ ์ œ๊ฑฐํ•˜๋ฉด, ์ž๋ฐ”์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ ์ ˆํžˆ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

+ Recent posts