๋กœ์ผ“๐Ÿพ
article thumbnail

 

์ •์ (Static)์ด๋ž€?

 

์ •์ (static)์€ ๊ณ ์ •๋œ์ด๋ž€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Static์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Static๋ณ€์ˆ˜์™€ Static๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‹ค๋ฅธ๋ง๋กœ ์ •์ ํ•„๋“œ์™€ ์ •์  ๋ฉ”์†Œ๋“œ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ์ด ๋‘˜์„ ํ•ฉ์ณ ์ •์  ๋ฉค๋ฒ„๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (ํด๋ž˜์Šค ๋ฉค๋ฒ„๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.) ์ •์  ํ•„๋“œ์™€ ์ •์  ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)์— ์†Œ์†๋œ ๋ฉค๋ฒ„๊ฐ€ ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค์— ๊ณ ์ •๋œ ๋ฉค๋ฒ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•ด์„œ ๋ฉ”์†Œ๋“œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ์žฌํ• ๋•Œ ํด๋ž˜์Šค๋ณ„๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค์˜ ๋กœ๋”ฉ์ด ๋๋‚˜๋Š” ์ฆ‰์‹œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ •์ (Static) ๋ฉค๋ฒ„ ์ƒ์„ฑ

 

Static ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ •์ ๋ฉค๋ฒ„๋“ค์€ Heap์˜์—ญ์ด ์•„๋‹Œ Static์˜์—ญ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. Static ์˜์—ญ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฉค๋ฒ„๋ฅผ ์–ด๋””์„œ๋“ ์ง€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ๊ฐ€์ง€์ง€๋งŒ Garbage Collector์˜ ๊ด€๋ฆฌ ์˜์—ญ ๋ฐ–์— ์กด์žฌํ•˜๊ธฐ์— Static์˜์—ญ์— ์žˆ๋Š” ๋ฉค๋ฒ„๋“ค์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ข…๋ฃŒ์‹œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ ์ฑ„๋กœ ์กด์žฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— Static์„ ๋„ˆ๋ฌด ๋‚จ๋ฐœํ•˜๊ฒŒ ๋˜๋ฉด ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์— ์•…์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์ œํ•˜๋ ค๋ฉด null๋กœ ๋ฆฌํผ๋Ÿฐ์Šค๋ฅผ ์žฌ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

 

 

์ •์ (Static) ๋ฉค๋ฒ„ ์„ ์–ธ

 

ํ•„๋“œ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑ ์‹œ ์ธ์Šคํ„ด์Šค๋กœ ์ƒ์„ฑํ• ๊ฒƒ์ธ์ง€ ์ •์ ์œผ๋กœ ์ƒ์„ฑํ• ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ํŒ๋‹จ ๊ธฐ์ค€์€ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š๋ƒ ์•„๋‹ˆ๋ƒ๋กœ ๋‚ด๋ฆฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ์ž๋™์œผ๋กœ ์ธ์Šคํ„ด์Šค๋กœ ์ƒ์„ฑ๋˜๋ฉฐ ์ •์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ ค๋ฉด ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ ์„ ์–ธ ์‹œ static์ด๋ผ๋Š” ํ‚ค์›Œ๋“ค๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ถ™์ด๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

static int num = 0; //ํƒ€์ž… ํ•„๋“œ = ์ดˆ๊ธฐ๊ฐ’
public static void static_method(){} //static ๋ฆฌํ„ด ํƒ€์ž… ๋ฉ”์†Œ๋“œ {}

 

 

์ •์ (Static) ํ•„๋“œ ์‚ฌ์šฉ ์˜ˆ์‹œ

 

class Number{
    static int num = 0; //ํด๋ž˜์Šค ํ•„๋“œ
    int num2 = 0; //์ธ์Šคํ„ด์Šค ํ•„๋“œ
}

public class Static_ex {
	
    public static void main(String[] args) {
    	Number number1 = new Number(); //์ฒซ๋ฒˆ์งธ number
    	Number number2 = new Number(); //๋‘๋ฒˆ์จฐ number
    	
    	number1.num++; //ํด๋ž˜์Šค ํ•„๋“œ num์„ 1์ฆ๊ฐ€์‹œํ‚ด
    	number1.num2++; //์ธ์Šคํ„ด์Šค ํ•„๋“œ num์„ 1์ฆ๊ฐ€์‹œํ‚ด
    	System.out.println(number2.num); //๋‘๋ฒˆ์งธ number์˜ ํด๋ž˜์Šค ํ•„๋“œ ์ถœ๋ ฅ
    	System.out.println(number2.num2); //๋‘๋ฒˆ์งธ number์˜ ์ธ์Šคํ„ด์Šค ํ•„๋“œ ์ถœ๋ ฅ
    }
}

Number์ด๋ผ๋Š” ํด๋ž˜์Šค์•ˆ์— ํด๋ž˜์Šค ๋ณ€์ˆ˜ num๊ณผ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ num2๋ฅผ ์ƒ์„ฑํ•˜์˜€๊ณ  ๋‘๊ฐœ์˜ Number์ธ์Šคํ„ด์Šค number1๊ณผ number2๋ฅผ ์ƒ์„ฑํ–ˆ์„๋•Œ number1์—์„œ num1๊ณผ num2๋ฅผ ๊ฐ๊ฐ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  number2์—์„œ num1์™€ num2๋ฅผ ๊ฐ๊ฐ ์ถœ๋ ฅ์‹œ์ผฐ์„๋•Œ๋Š” num1์€ 1, num2๋Š” 0์ด ์ถœ๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ ์ด๋Ÿฐ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚ฌ๋Š๋ƒ๋ฉด ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€์ง€๋งŒ ์ •์  ๋ณ€์ˆ˜๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ €์žฅ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๊ธฐ์— ํ•ญ์ƒ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ธฐ์— ๋‚˜ํƒ€๋‚œ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

 

 

์ •์ (Static) ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ์˜ˆ์‹œ

 

class Name{
    static void print() { //ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ
	System.out.println("๋‚ด ์ด๋ฆ„์€ ํ™๊ธธ๋™์ž…๋‹ˆ๋‹ค.");
    }

    void print2() { //์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ
	System.out.println("๋‚ด ์ด๋ฆ„์€ ์ด์ˆœ์‹ ์ž…๋‹ˆ๋‹ค.");
    }
}

public class Static_ex {
	
    public static void main(String[] args) {
        Name.print(); //์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅ
    	
        Name name = new Name(); //์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
        name.print2(); //์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ์•ผ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅ
    }
}

์ •์  ๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์ •์  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ •์  ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ๋ฉ”์†Œ๋“œ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

Conference

 

์ž๋ฐ” static์˜ ์˜๋ฏธ์™€ ์‚ฌ์šฉ๋ฒ•

 

 

 

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

profile on loading

Loading...