범위 및 수명
변수가 어디에서 보이는지(범위), 얼마나 오래 존재하는지(수명)를 이해합니다. 블록, 반복문, 메서드, 필드, 이름 가리기와 final 매개변수를 다룹니다.
범위 및 수명은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
범위와 수명 비교
범위는 이름(변수)을 사용할 수 있는 위치입니다. 수명은 변수가 존재하는 기간입니다. 블록 범위, 반복문 범위, 메서드 지역 변수, 클래스 필드, 이름 가리기 규칙을 살펴봅니다.
블록 범위
블록 범위: 중괄호 안에서 선언한 변수는 해당 중괄호 안에서만 사용할 수 있습니다.
public class Main {
public static void main(String[] args) {
int a = 10; // visible in main
{
int b = 20; // visible only inside this block
System.out.println("inside block: a=" + a + ", b=" + b);
}
System.out.println("outside block: a=" + a);
// System.out.println(b); // would NOT compile: b is out of scope
}
}
반복문 범위
반복문 범위: for 헤더에서 선언한 반복문 인덱스는 반복문 본문 안에서만 사용할 수 있습니다.
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 3; i = i + 1) {
System.out.println("i in loop = " + i);
}
// System.out.println(i); // would NOT compile: i is scoped to the loop
int j;
for (j = 0; j < 2; j = j + 1) {
System.out.println("j in loop = " + j);
}
System.out.println("j after loop = " + j); // OK: j declared outside
}
}
필드와 지역 변수
수명: 클래스 필드와 정적 필드는 호출 사이에도 유지되고, 지역 변수는 호출할 때마다 다시 만들어졌다가 메서드가 끝나면 폐기됩니다.
public class Main {
// static field (class-level): lives for the program lifetime
static int counter = 0;
static void tick() {
int local = 100; // local: created each call, dies when method returns
counter = counter + 1;
System.out.println("tick: counter=" + counter + ", local=" + local);
}
public static void main(String[] args) {
tick();
tick();
tick();
System.out.println("final counter=" + counter);
}
}
이름 가리기
이름 가리기: 내부 선언(예: 매개변수나 지역 변수)은 같은 식별자를 가진 바깥쪽 이름을 가릴 수 있습니다. 숨겨진 필드에 접근하려면 ClassName.field를 사용하거나, 인스턴스 메서드에서는 this.field를 사용하십시오.
public class Main {
static String label = "FIELD"; // class field
static void demo(String label) { // parameter shadows field name
System.out.println("param label = " + label); // uses parameter
{
String labelInner = "INNER"; // new name in inner block
System.out.println("inner block labelInner = " + labelInner);
System.out.println("still param label = " + label);
}
System.out.println("field via class name = " + Main.label); // refer to field explicitly
}
public static void main(String[] args) {
demo("PARAM");
}
}
최종 지정과 값에 의한 전달
최종 지정된 매개변수는 다시 대입할 수 없습니다. Java는 값에 의한 전달을 사용하므로, 매개변수를 다시 대입해도 호출자의 변수는 바뀌지 않습니다.
public class Main {
// final parameter cannot be reassigned inside the method
static int inc(final int n) {
// n = n + 1; // would NOT compile if uncommented
return n + 1; // safe: return a new value
}
static void reassign(int x) {
x = 999; // reassignes the local copy; caller variable is unchanged
}
public static void main(String[] args) {
int a = 5;
int b = inc(a);
System.out.println("a=" + a + ", b=inc(a)=" + b);
reassign(a);
System.out.println("after reassign(a): a is still " + a);
}
}
범위와 수명 확인
빠른 확인: 범위와 수명에 관한 설명 중 TRUE인 것은 무엇입니까?
복습 및 다음 단계
복습: 블록과 반복문 범위, 필드와 지역 변수, 이름 가리기, 최종 지정 매개변수를 연습했습니다. 다음은 A2.2의 설계 및 재사용 패턴으로 넘어갑니다.
자주 묻는 질문
“범위 및 수명” 강의는 무료인가요?
네 — “범위 및 수명” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
“범위 및 수명”에서 뭘 배우나요?
변수가 어디에서 보이는지(범위), 얼마나 오래 존재하는지(수명)를 이해합니다. 블록, 반복문, 메서드, 필드, 이름 가리기와 final 매개변수를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.
“범위 및 수명” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 메서드 및 매개변수 정의
- 반환값 및 오버로딩
- 범위 및 수명