ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • class(클래스) 변수, instance(인스턴스) 변수, local(지역) 변수의 차이
    Study/Java 2020. 9. 11. 09:36
    반응형

     

    지역 변수 : 멤버 변수를 제외한 나머지 변수

     

    이제 지역 변수가 아닌 클래스 변수와 인스턴스 변수를 생각해보자. 

    클래스 변수와 인스턴스 변수의 차이를 이해하기 위해 카드 게임에 사용되는 카드를 클래스로 정의해본다. 

     

     

     

     

     

    카드 클래스를 작성하기 위해서 속성으로 카드의 무늬, 숫자, 폭, 높이 정도를 생각해 볼 수 있다.

    class로 표현해보자.

     

    class Card{
    	String kind; //무늬
        Int number; //숫자
        
        static int width = 100; // 폭
        static int height = 250; //높이 
        
        }

     

     

    위와 같이 무늬와 숫자는 각 카드마다 가지고 있는 개별 속성이므로 static을 붙이지 않아, Instance 변수가 된다. 

    폭과 높이는 모든 카드가 가지고 있는 공통적인 값이고, 같은 값을 유지해야 하므로 class 변수가 된다. 

     

    인스턴스 변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다. 

     

     

    변수의 종류 선언위치 생성시기
    클래스 변수 
    (class variable)
    클래스 영역 클래스가 메모리에 올라갈 때 
    인스턴스 변수 
    (instance variable)
    인스턴스가 생성되었을 때
    지역 변수 
    (local variable)
    클래스 영역 이외의 영역
    (메서드, 생성자, 초기화 블럭 내부)
    변수 선언문이 수행되었을 때 

     

     

    정리

    • static이 붙으면 class 변수 
    • static이 붙지 않으면 instance 변수 

     

     

     

    반응형

    'Study > Java' 카테고리의 다른 글

    Java equals()와 ==의 차이  (0) 2020.09.10

    댓글

Designed by Who.