์ ์ (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์ ์๋ฏธ์ ์ฌ์ฉ๋ฒ
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] try ~ catch๋ฌธ์ ์ด์ฉํ์ฌ ์์ธ์ฒ๋ฆฌ ํ๊ธฐ (2) | 2021.06.22 |
---|---|
[JSP] <c:forEach> varStatus ํ์ฉ๋ฒ (0) | 2021.06.10 |
์ ๊ฐ๋ฐ์๋ ์๋ชป๋ ๊ธฐ์ ์ ํ์ ๋ฐฅ ๋จน๋ฏ์ด ํ๋? (4) | 2021.06.05 |
[Java] ์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค (4) | 2021.06.01 |
[AWS] EC2๋ฅผ ์ด์ฉํ์ฌ Node.js ์๋ฒ ๋ฐฐํฌํ๊ธฐ (4) | 2021.05.23 |