
์ผํ๋ค๋ณด๋ฉด static ํค์๋๋ฅผ ๋ง์ด ์ ํ๊ฒ ๋๋๋ฐ ๋ถ๋ช ํ ๊ณต๋ถ๋ฅผ ํ๋๊ฑด๋ฐ๋ ๋ณผ๋๋ง๋ค '์ ํํ ๋ญ์์ง..?'ํ๊ณ ์๊ฐํ๊ฒ ๋๋ค. ๋ค๋ฅธ ๊ฑด ๊ธฐ์ต์ ์๋ง ๋จ์ผ๋ฉด์ ์ ์ด์ํ๊ฒ static๋ง ๊ธฐ์ต์ ์๋จ๋๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ด์ฐธ์ ์๋ฒฝํ๊ฒ static์ ๋ง์คํฐ์์ ์๋ค๊ฐ๋ ๋ถ๋ฅด๋ฉด ๋ฌ๋ฌ๋ฌ ์์ ์ ์๋๋ก ๋ง์คํฐ ํด์ผ์ง!
์๋ก
์ฌ์ ์ ์ผ๋ก Static์ '๊ณ ์ ๋'์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, Staticํค์๋๋ฅผ ํตํด ์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์๋ค.
์ด๋ ๊ฒ ๋ง๋ค์ด์ง ์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋๋ ํด๋น ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๊ธฐ ์ ๊น์ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ดํ์์๋ ์ ์ ๋ณ์(Static ๋ณ์)์ ์ ์ ๋ฉ์๋(Static ๋ฉ์๋)์ ๋ํด ์์ธํ ์์๋ณผ ๊ฒ์ด๋ค.
static์ด๋?

ํด๋น ๊ทธ๋ฆผ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํ ์ดํด๋ฅผ ๋๊ณ ์ ๊ทธ๋ฆผํ์ผ๋ก ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ณด๋ฉด static ์์ญ๊ณผ heap(ํ) ์์ญ์ด ์กด์ฌํ๋ค.
- static ์์ญ์ ์ฌ์ฉ์๊ฐ ๋ง๋ ํด๋์ค(class)๊ฐ ๋ชจ์ฌ ์๋ ๊ณต๊ฐ์ด๊ณ
- heap(ํ) ์์ญ์๋ new ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ๋ง๋ค์ด์ง ๊ฐ์ฒด๊ฐ ๋ชจ์ฌ ์๋ ๊ณต๊ฐ์ด๋ค.
- heap(ํ) ์์ญ์ Garbage Collector(GC)๊ฐ ์์๋ก ๊ด๋ฆฌํ๊ณ , static ์์ญ์ GC๊ฐ ๊ด๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ static ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น๋ฒํ๊ฒ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
static ๋ณ์์ static ๋ฉ์๋
- static ๋ณ์๋ ํด๋์ค ๋ณ์(ํน์ ํด๋์ค์ ์ํ ๋ณ์๋ก, ํด๋น ํด๋์ค์ ๋ชจ๋ ์ธ์คํด์ค(๊ฐ์ฒด)๊ฐ ๊ณต์ ํจ)๋ก, ๋ณ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ static ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
- static ๋ฉ์๋๋ ํน์ ํด๋์ค์ ์ํ ๋ฉ์๋๋ก, ํด๋์ค์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ์์ฑํ์ง ์๊ณ ์ง์ ํธ์ถํ ์ ์์ผ๋ฉฐ ํด๋์ค ์ด๋ฆ์ ํตํ์ฌ ํธ์ถ๋๋ค.
- ์ ์ธ : ๋ฉ์๋์ ๋ณ์ ์ ์ธ ์์ 'static'ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋ณ์/์ ์ ๋ฉ์๋ ์์ ๋ํ๋ด์ฃผ๋ฉด ๋๋ค.
[ํ์ฉ ์์ ์ฝ๋ ↓]
public class Example {
// ์ ์ ๋ณ์(static ๋ณ์)
private static int staticVariable = 100;
// ์ ์ ๋ฉ์๋(static ๋ฉ์๋)
private static Integer addStatic(int a, int b) {
return a + b + staticVariable;
}
// ์ธ์คํด์ค ๋ฉ์๋(instance ๋ฉ์๋):
private Integer addInstance(int a, int b) {
return a + b + staticVariable;
}
public static void main(String[] args) {
// ์ ์ ๋ฉ์๋ ํธ์ถ (ํด๋์ค ์ด๋ฆ์ผ๋ก ํธ์ถ)
Integer resultStatic = Example.addStatic(3, 4);
// ์ธ์คํด์ค ์์ฑ(์ธ์คํด์ค ๋ฉ์๋ ํธ์ถ์ ์ํ)
Example exampleObject = new Example();
// ์ธ์คํด์ค ๋ฉ์๋ ํธ์ถ(๊ฐ์ฒด๋ฅผ ํตํด ํธ์ถ)
Integer resultInstance = exampleObject.addInstance(5, 6);
// ์ ์ ๋ณ์ ์ถ๋ ฅ
System.out.println("Static๋ณ์: " + Example.staticVariable);
// ์ ์ ๋ณ์ ๋ณ๊ฒฝ
Example.staticVariable = 200;
// ๋ณ๊ฒฝ๋ ์ ์ ๋ณ์๋ก ๋ค์ ํธ์ถ
Integer updatedResultStatic = Example.addStatic(3, 4);
System.out.println("๋ณ๊ฒฝ๋ static ๋ณ์ : " + updatedResultStatic);
}
}
์ฝ๋๋ฅผ ๋ณด๋ฉด 'static' ํค์๋๊ฐ ๋ถ์ด ์๋ ์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ์์ฑํ์ง ์๊ณ ๋ ํด๋์ค ์ด๋ฆ(Example.addStatic, Example.staticVariable)์ผ๋ก ํธ์ถ์ด ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ฐ๋ฉด 'static'ํค์๋๊ฐ ๋ถ์ด ์์ง ์์ ์ธ์คํด์ค ๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ ํตํด ํธ์ถํด์ผ ํ๋ฏ๋ก new ํค์๋๋ฅผ ๋ถ์ฌ 'new Example();' ์ด๋ฐ์์ผ๋ก ์ธ์คํด์ค๋ฅผ ํธ์ถํ ๋ค ํธ์ถํ์๋ค. ์ค๋ช ์ ๋ณด๋ ๊ฒ๋ณด๋ค ์ง์ ์ฝ๋๋ก ์ณ๋ณด๋ฉด ์ดํด๊ฐ ํจ์ฌ ์ฝ๊ฒ ๋ ๊ฒ์ด๋ค.
'static' ์ฌ์ฉํด๋ ๋ ๊น?
static ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ์์ฑํ์ง ์๊ณ ๋ ๋ฉ์๋์ ๋ณ์๋ฅผ ํธ์ถ ํ ์ ์๊ธฐ๋๋ฌธ์ ๊ต์ฅํ ํธ๋ฆฌํ๋ค๊ณ ์๊ฐ ๋ ์ ์์ง๋ง, ํธ๋ฆฌ์ฑ๊ณผ๋ ๋ณ๊ฐ๋ก ์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋์ ๋ฌด๋ถ๋ณํ ์ฌ์ฉ๋ณด๋ค๋ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์ฌ์ฉ์ด ํ์ํ๋ค. ์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋์ ์ฌ์ฉ์ ๊ฐ๊ธ์ ์์ ํด์ผ ํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Garbage Collector(GC)์ ๊ด๋ฆฌ ์์ญ์ด ์๋๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๆ
- static ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋์ง ์์ผ๋ฉฐ, ์๋ธํด๋์ค์์ ์ฌ์ ์ํ ์ ์๋ค. -> ์ฆ ์ฝ๋์ ์ ์ฐ์ฑ ๊ฐ์
- static ๋ณ์์ static ๋ฉ์๋๋ ์ ์ญ์์ ์ฝ๊ฒ ์ฌ์ฉ๋๋ฏ๋ก ์์กด์ฑ์ด ์ปค์ง ์ ์๋ค. ์ฆ ์๋ก์๊ฒ ์์กดํ๊ฒ ๋๋ฉด ์์คํ ์ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์ ์ง๋ค. -> ์์กด์ฑ ๋ฌธ์ ๆ
- static ๋ณ์๊ฐ ๋ง์ฝ ์ฌ๋ฌ ์ค๋ ๋์์ ๊ณต์ ๋ ๋ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋์์ ์ฌ๋ฌ ์ค๋ ๋์์ ์ ์ ๋ณ์๋ฅผ ์์ ํ๋ค๊ฑฐ๋ ์ฝ์ ๋ ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค. - > ๋ฉํฐ์ค๋ ๋ฉ ๋ฌธ์ ๋ฐ์ ํ๋ฅ ๅค
Reference
https://steady-coding.tistory.com/603
[Java] static์ด๋?
java-study์์ ์คํฐ๋๋ฅผ ์งํํ๊ณ ์์ต๋๋ค. Static์ ๊ฐ๋ Static(์ ์ )์ ๊ณ ์ ๋์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, Static ํค์๋๋ฅผ ํตํด ์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์๋ค. ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ์ ์
steady-coding.tistory.com
[ Java ] staticํจ์ static ๋ณ์
static์ ๋ํ์ฌ java์์ static ํค์๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด application์ด ์ข ๋ฃ๊ฐ ๋์์ ๋ ์ง์์ง๋ค. ์๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ณด๋ฉด static์์ญ์ด ์๊ณ ํ ์์ญ์ด ์๋ค. static์์ญ
itjava.tistory.com