-
[Java-10]변수의 스코프&라이프타임Java 2020. 11. 20. 17:39
Variable's scope & life cycle
저번에는 타입 캐스팅과 프로모션에 대해서 알아보았다. 이번에는 변수의 스코프와 라이프타임에 대해서 알아보도록 하자.
1. 스코프 (Scope)
먼저 우리가 변수를 선언한다고 가정을 하자,
이 변수의 사용 범위는 어디까지일 까? 이 변수의 사용범위는 선언된 클래스의 중괄호 내에서 사용가능하다. 이런 범위를 우리가 ‘스코프’라고 부르는 것이다. 좀더 쉽게 생각해보자, 이해할 때 집합과 섞어서 생각해보면 된다.
Class 안에 var1이란 변수가 선언 됬으면 var1의 스코프는 클래스 전체에서 놀 수 있다. 즉, foo() 메소드 안에서도 들어갈 수 있다는 얘기다.
하지만 var2는 어떨까? 저 변수의 스코프는 foo() 안에서의 초록색 칸에서만 사용할 수 있다. 즉, 반대로, var2의 집은 foo() 로 한정되어 있으므로, 집밖으로 나갈 수 없는 것이다.
꼭 메소드가 아니어도 상관 없다.
이렇게 if 문 안에서 사용한 var3도 if문의 스코프 안에서만 활동할 수 있다.
뭔가 이제 대충 감이 생길 수 있다. 스코프에 대해서 공부하거나 나중에 사용하다 보면,
뭔가 변수가 생성하고 스코프가 끝나면 변수를 죽이는것 같은데?
변수의 생명주기
1. 생명주기 (life Cycle)
모든 변수는 생명주기라는 걸 가지게 된다. 생명주기란, 변수가 생성되고 죽는걸 말한다. 이런 간단하게 클래스 내에서 선언하는 변수 를 인스턴스 변수라고 하고, 메소드 내에서 선언하는 변수를 지역변수라고 한다. 역시 그림을 보면 이해하기 쉬울 것이다.
각 변수의 생명주기에 대해서 알아 보도록 하자,
인스턴스 변수는 객체가 생성될 때, 변수가 생성된다. 즉, 현재 Test 클래스를 static main 메소드나 다른 클래스에서 인스턴스를 생할 때 생성이 된다.
그리고 인스턴스는 참조가 없을 때 가비지 컬렉터가 객체를 지워버리게 되는데 이때, 인스턴스 변수도 같이 소멸된다.
매개변수는 예를들어 저 코드의 foo() 의 메소드가 호출 될 때 var3가 생성되고 foo() 의 메소드가 종료 시점에 var3로 소멸 된다.ㅏ
지역 변수 Local 변수는 ‘ { ‘ 가 시작되는 시점에 생성되며, ‘ } ‘ 로 끝나는 시점에 소멸된다.
마지막으로 클래스 변수인 정적변수는 클래스가 처음 호출 되면서 생성이 되고, 자바 어플리케이션이 종료되는 시점에 같이 소멸된다 : )'Java' 카테고리의 다른 글
[Java-12] 자바 배열 (0) 2020.11.20 [Java-11]타입추론 var (1) 2020.11.20 [Java-9] 타입변환, 형변환 (0) 2020.11.18 [Java-8] 자바 변수 선언과 초기화 (0) 2020.11.18 [Java-7] 자바 타입의 종류 & 리터럴 (0) 2020.11.17