티스토리 뷰

"메서드 안(지역 변수)에서는 접근 제어자(public/private/protected와 static을 붙일 수 없음"

 

오늘은 이 자바 문법에 대해서 설명해보자.

 

이 문법을 어긴 예제는 다음과 같다.

public class Test {
    public static void main(String[] args) {
        public int num = 10; // ❌ 메서드 안에서는 public 불가
        static int count = 0; // ❌ 메서드 안에서는 static 불가
    }
}
// 에러 메시지...

제어자 public은 허용되지 않습니다.
modifier static not allowed here

 

그럼 문법에 맞게 고친 코드는 뭘까??? 

public class Test {
    public static int count = 0; // ✅ 클래스 필드

    public static void main(String[] args) {
        int num = 10; // ✅ 지역 변수 (접근제어자, static 없이)
        System.out.println(num);
    }
}

 

왜 이런 규칙이 있는 것일까.. 

 

  • public, private, protected → 누가 접근 가능한지를 결정하는 제어자인데, 지역변수는 그 메서드 블록 {} 안에서만 접근 가능하므로, 접근 범위 지정이 의미가 없다!!!
  • static → 클래스 로딩 시 딱 한 번 메모리에 고정된다는 의미!! but) 지역 변수는 메서드가 실행될 때 생성되고 끝나면 사라지므로 static과 맞지 맞지않음!!!!!!!!!!!!!!!!!!!!!!!!!!!

이 이유를 읽고 다시 바로 위 예제를 보면 왜 저렇게 코드를 짜야 올바른 문법을 지킨 것인지 이해가 갈것이다.. 

 

이번 포스팅은 지역변수에 대한 이해를 한 층더 업그레이트 할 수 있는 기회라고 생각한다.

오늘은 여기까지..

 

--------------------

main 메서드 안에 있는 변수 값을 다른 클래스에서 수정하려고 하다가 이런 문제를 만났다... 

하나 또 지식이 는것 같다 ( 아마도..?? 🙃 )

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함