English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
스타틱 파일/변수는 해당 클래스에 속하며, 메모리에 함께 로드됩니다. 객체를 생성하지 않고 호출할 수 있습니다. (클래스 이름을 참조하여 사용). 클래스 전체에서 하나의 단일 복사본의 스태틱 필드가 사용 가능하며, 즉, 스타틱 필드의 값은 모든 객체에서 일관되게 동일합니다. static 키워드를 사용하여 스타틱 필드를 정의할 수 있습니다.
public class Sample{ static int num = 50; public void demo(){ System.out.println("demo 메서드에서 num의 값 ")+ Sample.num); } public static void main(String args[]){ System.out.println("main 메서드에서 num의 값 ")+ Sample.num); new Sample().demo(); } }
출력 결과
main 메서드에서 num의 값 50 demo 메서드에서 num의 값 50
메서드에 포함된 변수는 지역 변수이며, 그 범위는 메서드 내에 위치하며 메서드 실행 후 소멸됩니다. 즉, 현재 메서드 외에서 클래스와 함께 사용할 수 없습니다./정적 변수의 정의와 충돌하는 지역 변수가 있습니다. 따라서 메서드 내에서 정적 변수를 선언하는 것은 의미가 없으며, 이를 시도하면 컴파일 시 오류가 발생합니다.
다음 Java 프로그램에서는 메서드 내에서 정적 변수를 선언하려고 시도합니다.
import java.io.IOException; import java.util.Scanner; public class Sample { static int num; public void sampleMethod(Scanner sc){ static int num = 50; } public static void main(String args[]) throws IOException { static int num = 50; } }
위 프로그램을 실행하려고 시도하면 다음과 같은 오류가 발생합니다-
Sample.java:6: error: expression 시작이 불법적입니다 static int num = 50; ^ Sample.java:9: error: expression 시작이 불법적입니다 static int num = 50; ^ 2 에러