English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 메서드에서 스태틱 변수를 선언할 수 있을까요?

스타틱 파일/변수는 해당 클래스에 속하며, 메모리에 함께 로드됩니다. 객체를 생성하지 않고 호출할 수 있습니다. (클래스 이름을 참조하여 사용). 클래스 전체에서 하나의 단일 복사본의 스태틱 필드가 사용 가능하며, 즉, 스타틱 필드의 값은 모든 객체에서 일관되게 동일합니다. 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 에러
좋아하는 것