티스토리 뷰
Java
자바 - 메서드 안(지역 변수)에서는 접근 제어자(public/private/protected와 static을 붙일 수 없음.
Kodong's blog 2025. 8. 15. 11:33"메서드 안(지역 변수)에서는 접근 제어자(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 메서드 안에 있는 변수 값을 다른 클래스에서 수정하려고 하다가 이런 문제를 만났다...
하나 또 지식이 는것 같다 ( 아마도..?? 🙃 )
'Java' 카테고리의 다른 글
| 자바 - 메서드 오버로딩(Method Overloading) - "메서드의 이름만같으면 동일한 메서드 아닌가? 하나의 이름에는 하나의 메서드만이 존재할 수 있는 것이 아닌가?" 의문 해결하기 (3) | 2025.08.15 |
|---|---|
| 자바 - 메서드에서 " return null; " 의 의미 (2) | 2025.08.15 |
| 자바 - static키워드를 써야할까 Instance를 써야할까? (4) | 2025.08.14 |
| 자바 - 참조형 타입 확인 예제 (2) | 2025.08.12 |
| 자바 - JVM 메모리 구조 총 정리 ( 예제로 이해하자!! ) (2) | 2025.08.12 |