
🔑 자바 범위, 지역과 전역으로 다시 설명!
자바에서 변수의 범위(Scope)는 그 변수가 "어디까지 영향을 미치고, 어디서 불러서 사용할 수 있는지"를
정하는 규칙이라고 했죠?
이것을 크게 두 종류로 나누면 다음과 같습니다.
1. 🏠 아파트 전체: 전역 변수 역할 (클래스 멤버 변수)
이 변수는 아파트 전체와 같아요.
| 용어 | 자바에서의 이름 | 아파트 비유 | 특징 |
| 전역 변수 역할 | 클래스 멤버 변수 (Field) | 🏢 아파트 단지 이름 | 아파트 단지 안의 모든 동, 모든 호수에서 이 이름을 알고 사용할 수 있어요. |
| 위치 | 클래스 {} 안에 있지만, 메소드 {} 밖 |
쉽게 말해: 한 번 만들면 그 클래스(아파트 단지) 안에 있는 모든 곳에서 사용할 수 있어요.
2. 🚪 방 안: 지역 변수 (Local Variable)
이 변수는 특정 방 안에서만 사용할 수 있어요.
| 용어 | 자바에서의 이름 | 아파트 비유 | 특징 |
| 지역 변수 | 지역 변수 (Local Variable) | 🎈 어떤 방에서 산 장난감 | 그 방(메소드나 블록) 안에서만 가지고 놀 수 있고, 방을 나가면 친구들은 그 장난감이 있는지 몰라요. |
| 위치 | 메소드나 특정 블록 {} 안 |
쉽게 말해: 변수가 만들어진 중괄호 {} 안에서만 잠깐 사용하고, 중괄호를 벗어나면 사라지는 변수입니다.
💡 예시로 확인하기: 아파트 단지
Java
class ApartmentComplex { // 🏢 아파트 단지 전체 (클래스)
String complexName = "행복 아파트"; // 1️⃣ 전역 변수 역할 (클래스 멤버 변수)
// (이 변수는 단지 전체 어디서든 사용 가능!)
void room_A() { // 🏠 A동의 한 호실 (메소드 1)
int toy_A = 5; // 2️⃣ 지역 변수 (A 호실 안에서만 존재)
System.out.println("우리는 " + complexName + "에 살고 있어요.");
System.out.println("내 방에 있는 장난감은 " + toy_A + "개!");
} // toy_A는 이 방을 나가는 순간 사라져요.
void room_B() { // 🏠 B동의 한 호실 (메소드 2)
System.out.println("옆집도 " + complexName + "에 살고 있죠.");
// 만약 여기서 toy_A를 사용하려고 한다면?
// System.out.println(toy_A);
// ❌ 에러! toy_A는 A 호실(room_A)에만 있었어요.
if (true) { // 📦 작은 상자 (블록)
String snack = "아이스크림"; // 3️⃣ 지역 변수 (이 상자 안에서만 존재)
System.out.println("상자 안에 " + snack + "이 들어있어요!");
} // snack 변수는 상자를 닫는 순간 사라져요.
}
}
🎈 요약
- complexName: 아파트 단지 전체 이름이라 A 방, B 방 모두 사용할 수 있는 전역 변수 역할입니다.
- toy_A: room_A() 방 안에서만 만든 변수라 room_B()에서는 사용할 수 없는 지역 변수입니다.
- snack: if라는 작은 상자 안에서만 만든 변수라, 그 상자를 벗어나면 바로 사라지는 더 작은 지역 변수입니다.
이렇게 자바는 변수들을 클래스(전체)와 메소드/블록(부분)으로 나누어 효율적으로 관리하고, 서로 방해하지 않도록 해주는 것이 바로 범위(Scope)랍니다!
'Java_language' 카테고리의 다른 글
| 최대값 (Maximum) 반환 메서드 (0) | 2025.11.24 |
|---|---|
| Java Example of implementing the four arithmetic operation method (0) | 2025.11.24 |
| 메서드 오버라이딩 (Method Overriding) (0) | 2025.11.24 |
| 메서드 오버로딩 (Method Overloading) (0) | 2025.11.24 |
| 자바 메서드(Method) (0) | 2025.11.24 |