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 |
static ์ฌ์ฉ
public class Data {
public String name;
public static int count; //static
public Data(String name){
this.name = name;
count++;
}
}
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
์ถ์ฒ : ๊น์ํ์ ์ค์ ์๋ฐ-๊ธฐ๋ณธํธ
๋๊ธ