Java Scope๋ ๋ณ์๋ ๋ฉ์๋๊ฐ ํ๋ก๊ทธ๋จ ๋ด์์ ์ ๊ทผํ ์ ์๋ ๋ฒ์๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ณ์์ ์ ์ธ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฒ์๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ Java์์ ๋ณ์์ ์ค์ฝํ๋ฅผ ์ข ๋ฅ๋ณ๋ก ์ ๋ฆฌํ๊ณ , ํ์ฉ ์์ ๋ฅผ ํตํด ์ค์ฝํ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
1. Java Scope๋?
Java์์ ๋ณ์์ ์ค์ฝํ๋ ํด๋น ๋ณ์๊ฐ ์ ํจํ ์ฝ๋ ๋ธ๋ก์ ๋ฒ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ค์ฝํ๋ ์ฃผ๋ก ๋ณ์์ ์ ์ธ ์์น์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ์ ํ์ผ๋ก ๋๋ ์ ์์ต๋๋ค:
- ํด๋์ค ์ค์ฝํ(Class Scope)
- ๋ฉ์๋ ์ค์ฝํ(Method Scope)
- ๋ธ๋ก ์ค์ฝํ(Block Scope)
2. ํด๋์ค ์ค์ฝํ (Class Scope)
ํด๋์ค ์ค์ฝํ๋ ํด๋์ค ๋ณ์(๋ฉค๋ฒ ๋ณ์)์ ์ ์ฉ๋ฉ๋๋ค. ํด๋์ค ๋ด๋ถ์์ ์ ์ธ๋ ๋ณ์๋ ํด๋์ค ์ ์ฒด์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ : ํด๋์ค ์ค์ฝํ
public class ClassScopeExample {
// ํด๋์ค ์ค์ฝํ ๋ณ์
private static int count = 0;
public static void incrementCount() {
count++;
System.out.println("ํ์ฌ ์นด์ดํธ: " + count);
}
public static void main(String[] args) {
incrementCount(); // count = 1
incrementCount(); // count = 2
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
ํ์ฌ ์นด์ดํธ: 1
ํ์ฌ ์นด์ดํธ: 2
์ ์์ ์์ count
๋ ํด๋์ค ์ ์ญ์์ ์ ๊ทผ ๊ฐ๋ฅํ ํด๋์ค ์ค์ฝํ ๋ณ์์
๋๋ค.
3. ๋ฉ์๋ ์ค์ฝํ (Method Scope)
๋ฉ์๋ ์ค์ฝํ๋ ๋ฉ์๋ ๋ด๋ถ์์ ์ ์ธ๋ ๋ณ์์ ์ ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ๋ณ์๋ ํด๋น ๋ฉ์๋ ๋ด์์๋ง ์ ํจํ๋ฉฐ, ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋ฉด ์๋ฉธํฉ๋๋ค.
์์ : ๋ฉ์๋ ์ค์ฝํ
public class MethodScopeExample {
public static void displayMessage() {
// ๋ฉ์๋ ์ค์ฝํ ๋ณ์
String message = "Hello, Java!";
System.out.println(message);
}
public static void main(String[] args) {
displayMessage();
// System.out.println(message); // ์ค๋ฅ: message๋ ๋ฉ์๋ ์ค์ฝํ ๋ณ์
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
Hello, Java!
๋ฉ์๋ ์ค์ฝํ ๋ณ์์ธ message
๋ ๋ฉ์๋ ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
4. ๋ธ๋ก ์ค์ฝํ (Block Scope)
๋ธ๋ก ์ค์ฝํ๋ if, for, while ๋ฑ์ ๋ธ๋ก ๋ด๋ถ์์ ์ ์ธ๋ ๋ณ์์ ์ ์ฉ๋ฉ๋๋ค. ํด๋น ๋ธ๋ก ๋ด์์๋ง ๋ณ์์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋ธ๋ก์ ๋ฒ์ด๋๋ฉด ๋ณ์๋ ์๋ฉธ๋ฉ๋๋ค.
์์ : ๋ธ๋ก ์ค์ฝํ
public class BlockScopeExample {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("i์ ๊ฐ: " + i);
}
// System.out.println(i); // ์ค๋ฅ: i๋ ๋ธ๋ก ์ค์ฝํ ๋ณ์
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
i์ ๊ฐ: 0
i์ ๊ฐ: 1
i์ ๊ฐ: 2
i์ ๊ฐ: 3
i์ ๊ฐ: 4
์ ์์ ์์ i
๋ for
๋ธ๋ก ๋ด์์๋ง ์ ํจํฉ๋๋ค.
5. ์ค์ฝํ ํ์ฉ ์์
5.1 ๋ณ์ ์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง
์ค์ฝํ๋ฅผ ํ์ฉํ๋ฉด ๋์ผํ ์ด๋ฆ์ ๋ณ์๋ฅผ ์๋ก ๋ค๋ฅธ ๋ฒ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
public class ScopeExample {
private static int value = 100; // ํด๋์ค ์ค์ฝํ
public static void main(String[] args) {
int value = 50; // ๋ฉ์๋ ์ค์ฝํ
System.out.println("๋ฉ์๋ ์ค์ฝํ value: " + value);
System.out.println("ํด๋์ค ์ค์ฝํ value: " + ScopeExample.value);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
๋ฉ์๋ ์ค์ฝํ value: 50
ํด๋์ค ์ค์ฝํ value: 100
5.2 ์กฐ๊ฑด๋ฌธ์์ ๋ธ๋ก ์ค์ฝํ ํ์ฉ
public class ConditionScope {
public static void main(String[] args) {
int number = 10;
if (number > 5) {
String message = "number๋ 5๋ณด๋ค ํฝ๋๋ค.";
System.out.println(message);
}
// System.out.println(message); // ์ค๋ฅ: message๋ ๋ธ๋ก ์ค์ฝํ ๋ณ์
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
number๋ 5๋ณด๋ค ํฝ๋๋ค.
6. ์ค์ฝํ ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
- ๋ณ์ ์ด๋ฆ ์ค๋ณต: ๋์ผํ ์ด๋ฆ์ ๋ณ์๊ฐ ๋ค๋ฅธ ์ค์ฝํ์ ์กด์ฌํ ๊ฒฝ์ฐ, ๊ฐ์ฅ ๊ฐ๊น์ด ์ค์ฝํ์ ๋ณ์๊ฐ ์ฐ์ ๋ฉ๋๋ค.
- ๋ณ์ ์ด๊ธฐํ: ์ค์ฝํ ๋ด์์ ๋ณ์๋ ๋ฐ๋์ ์ด๊ธฐํ๋ ํ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ์ค์ฝํ ์ถ์: ๋ณ์์ ์ ํจ ๋ฒ์๋ฅผ ์ต์ํํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ๋์ด์ธ์.
๊ฒฐ๋ก
Java์์ ๋ณ์์ ์ค์ฝํ๋ ์ฝ๋์ ๊ตฌ์กฐ์ ์ค๋ฅ ๋ฐฉ์ง์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ํด๋์ค, ๋ฉ์๋, ๋ธ๋ก ์ค์ฝํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ํ์ฉํ๋ฉด ๋ณด๋ค ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฒ ๊ธ์์ ์๊ฐํ ๊ฐ๋ ๊ณผ ์์ ๋ฅผ ๋ฐํ์ผ๋ก Java ์ค์ฝํ๋ฅผ ์ ๊ทน ํ์ฉํด ๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ