ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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-11] 자바 타입추론 var  

    '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

    댓글

Designed by Tistory.