변수 선언 위치에 따른 분류
1. 로컬 변수(local variable)
- 메서드 내부에서 선언된 변수(for문, if문 등 포함)
- 주로 메서드의 중괄호 내부에서 선언되는 변수를 말하며 for문의 소괄호()에서 선언되는 제어변수도 로컬변수에 해당한다.
--> 메서드 파라미터 부분인 소괄호()에서 선언되는 변수를 별도로 파라미터 변수라고도 하지만,
로컬변수로 통일해도 무관하다.
- 해당 변수가 선언된 위치로 부터 소속된 중괄호가 끝나는 지점까지만 접근 가능하다.
--> 라이프 사이클(life cycle)이라고 하며, 로컬 변수의 라이프 사이클은 선언 지점 부터 중괄호가 끝나는 지점까지 이다. 즉, 메서드가 종료되면 로컬변수도 사라진다는 뜻이다.
- 로컬변수는 반드시 초기화 후에 사용해야한다.
2. 멤버 변수(member variable)
- 클래스 내부, 메서드 외부에서 선언되는 변수
- 클래스 내의 어느 위치에서라도 동일한 변수로 취급된다.
- 클래스 내의 생성자나 메서드 등에서 접근 가능하다.
- 별도의 초기화를 하지 않을 경우 기본값으로 자동 초기화 된다.
1) 인스턴스 멤버 변수 (static x)
2) 클래스 멤버 변수 (static o)
💻 static 메서드에서 변수 localValue와 instanceMember의 출력문이 오류가 발생하는 이유는 뭘까?
--> static 메서드와 instance 메서드의 실행순서가 다르기 때문이다. static메서드가 더 먼저 메모리에 적재된다.
즉, static 메서드가 만들어진 상황에서 변수 instanceMember는 메모리에 적재되기 전이다.
그렇기 때문에 오류가 발생한다.
변수 localValue는 메서드에서 만들어진 로컬변수 이기 때문에, 메서드가 종료되면 자동으로 사라진다.
즉, 만들어진 메서드가 아니라, 다른 메서드에서 사용이 불가하다는 말이다.
'개발 > Java' 카테고리의 다른 글
[Java] static 멤버(클래스 멤버)와 인스턴스 멤버의 메모리 할당 순서 (0) | 2023.01.31 |
---|---|
[Java] 자바 프로그램 실행 과정과 static (0) | 2023.01.31 |
[Java] import문 (0) | 2023.01.28 |
[Java] 패키지 (0) | 2023.01.28 |
[Java] 참조형 변수 (0) | 2023.01.26 |