๐Ÿ“•JAVA

[JAVA] ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ static

๋น™๋””์šฉ 2023. 6. 19.

1. ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

- ๋ฉ”์„œ๋“œ ์˜์—ญ : ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ณตํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ. (ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ์˜์—ญ์—์„œ ๊ณต์œ )

    - ํด๋ž˜์Šค ์ •๋ณด : ํด๋ž˜์Šค ์‹คํ–‰ ์ฝ”๋“œ, ํ•„๋“œ, ๋ฉ”์„œ๋“œ์™€ ์ƒ์„ฑ์ž ์ฝ”๋“œ ๋“ฑ ๋ชจ๋“  ์‹คํ–‰ ์ฝ”๋“œ

    - static ์˜์—ญ : static ๋ณ€์ˆ˜๋“ค์„ ๋ณด๊ด€

    - ๋Ÿฐํƒ€์ž„ ์ƒ์ˆ˜ ํ’€ : ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ณตํ†ต ๋ฆฌํ„ฐ๋Ÿด ์ƒ์ˆ˜๋ฅผ ๋ณด๊ด€

 

- ์Šคํ… ์˜์—ญ : ์ž๋ฐ” ์‹คํ–‰ ์‹œ, ํ•˜๋‚˜์˜ ์‹คํ–‰ ์Šคํƒ์ด ์ƒ์„ฑ๋œ๋‹ค. ๊ฐ ์Šคํƒ ํ”„๋ ˆ์ž„์€ ์ง€์—ญ ๋ณ€์ˆ˜, ์ค‘๊ฐ„ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ, ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ •๋ณด ๋“ฑ์„ ํฌํ•จ

    - ์Šคํƒ ํ”„๋ ˆ์ž„ : ์Šคํƒ ์˜์˜๊ฒŒ ์Œ“์ด๋Š” ๋„ค๋ชจ ๋ฐ•์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์Šคํƒ ํ”„๋ž˜์ž„.

 

- ํž™ ์˜์—ญ : ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)์™€ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ. 

 

2. ์Šคํƒ๊ณผ ํ ์ž๋ฃŒ ๊ตฌ์กฐ

1) ์Šคํƒ

- ์Šคํƒ์€ ํ›„์ž… ์„ ์ถœ์ด๋‹ค(LIFO, Last In First Out)

2) ํ

- ํ๋Š” ์„ ์ž… ์„ ์ถœ์ด๋‹ค(FIFO, First In First Out)

2.  static ๋ณ€์ˆ˜

- static์€ ์ฃผ๋กœ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉ๋œ๋‹ค.

- ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ์ธ์Šคํ„ด์Šค์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํด๋ž˜์Šค์— ๋ฐ”๋กœ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•  ๋•Œ ๋”ฑ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ง€๋ฉฐ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์—ฌ๋Ÿฌ ๊ณณ์— ๊ณต์œ ํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

- ํŠน์ • ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ์ˆ˜๋ฅผ ์„ธ๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ

 

<๋ชฉํ‘œ>

์‹คํ–‰ ๊ฒฐ๊ณผ
A count=1
B count=2

 

static ๋ฏธ์‚ฌ์šฉ

public class Data1 {
	public String name;
	public int count;
    
	public Data1(String name) {
		this.name = name;
		count++;
	}
}
์‹คํ–‰ ๊ฒฐ๊ณผ
A count=1
B count=1

 

์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉ๋˜๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ count ๊ฐ’์€ ์ธ์Šคํ„ด์Šค๋ผ๋ฆฌ ์„œ๋กœ ๊ณต์œ ๋˜์ง€ ์•Š์Œ

 

static ์‚ฌ์šฉ

 

public class Data {
	public String name;
    public static int count; //static
    
    public Data(String name){
    this.name = name;
    count++;
    }
}

static์ด ๋ถ™์€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ๋ฉ”์„œ๋“œ ์˜์—ญ์—์„œ ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค์™€ ์ƒ๊ด€์—†์ด ๊ฐ’์ด ์ฆ๊ฐ€๋จ

 

3.  ๋ณ€์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ

1) ์ง€์—ญ ๋ณ€์ˆ˜

- ์Šคํƒ ์˜์—ญ์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์— ๋ณด๊ด€๋œ๋‹ค.

- ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์Šคํƒ ํ”„๋ ˆ์ž„๋„ ์ œ๊ฑฐ ๋˜๋Š”๋ฐ, ์ด๋•Œ ์ง€์—ญ๋ณ€์ˆ˜๋„ ์ œ๊ฑฐ๋œ๋‹ค.

- ์ƒ์กด ์ฃผ๊ธฐ๊ฐ€ ์งง๋‹ค

 

2) ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜

- ํž™ ์—ญ์—ญ์„ ์‚ฌ์šฉํ•œ๋‹ค.

- ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ƒ์กดํ•˜๋ฏ€๋กœ ์ง€์—ญ ๋ณ€์ˆ˜๋ณด๋‹ค ์ƒ์กด ์ฃผ๊ธฐ๊ฐ€ ๊ธธ๋‹ค.

 

3) ํด๋ž˜์Šค ๋ณ€์ˆ˜

- ๋ฉ”์„œ๋“œ ์˜์—ญ์˜ static ์˜์—ญ์— ๋ณด๊ด€๋˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

- JVM์— ๋กœ๋”ฉ๋˜๋Š” ์ˆœ๊ฐ„ ์ƒ์„ฑ๋˜์–ด์„œ JVM์ด ์ข…๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ์ƒ์กดํ•œ๋‹ค.

- ๊ฐ€์žฅ ๊ธด ์ƒ์กด ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

 

4. ์ •์  ๋ณ€์ˆ˜ ์ ‘๊ทผ ๋ฒ•

-static ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ์ ‘๊ทผ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

//์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•œ ์ ‘๊ทผ
Data data = new Data("C");
System.out.println(data.count); //4

//ํด๋ž˜์Šค๋ฅผ ํ†ตํ•œ ์ ‘๊ทผ
System.out.println(Data.count); //4

 

์ถœ์ฒ˜ : ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ”-๊ธฐ๋ณธํŽธ 

๋Œ“๊ธ€