문득 코딩을 하다 this는 과연 지역변수인가 인스턴스 변수인가 하는 의문이 들었습니다. 예들 들어 아래의 경우 this 는 인스턴스 변수인 a를 가리키고 set 메소드가 호출되면서 인스턴스 변수 a는 3이라는 값을 가지게 되어 출력됩니다. 그렇다면 this.a 는 인스턴스 변수 a를 가리키므로 this 역시 지역변수가 아닌 인스턴스 변수 라고 봐도 되는걸까요? ``` public class Test5 { int a; void set() { this.a = 3; } public static void main(String[] args) { Test5 ts = new Test5(); ts.set(); System.out.println(ts.a); } } ```
## 지역변수와 인스턴스변수 지역변수란 일반적으로 스택에 저장되는 변수를 뜻합니다. 반면, 인스턴스 변수는 객체가 가지고 있는 고유의 변수를 뜻합니다. 지역변수는 스택이 사라지면 같이 사라지게 되는 특성을 갖는 반면, 인스턴스 변수는 객체가 사라지기 전까지 살아있는 변수입니다. 따라서 this는 지역 변수가 아닌 인스턴스 변수로 이해하심이 맞다고 판단됩니다. 해당 객체가 사라지기 전까지 this는 항상 유효하기 때문입니다.