Java

24_변수

우오우어아오앙 2016. 9. 20. 22:09
728x90


변수


변수가 어디에 선언되어있는지가 중요.

위치에 따라서 변수를 구분한다.


자바의 변수는 ( 클래스 변수, 인스턴스 변수, 지역 변수 ) 이렇게 세 개로 나뉜다.


지역변수 - 멤버 변수를 제외한 변수

클래스 변수 - 멤버 변수 중 static 붙은 변수

인스턴스 변수 - 멤버 변수 중 static 붙지 않은 변수


class Variables {
  int a;                // 인스턴스 변수
  static int b;         // 클래스 변수 ( static 변수, 공유 변수 )


  void method(){
    int c;              // 지역 변수
  }
}


클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화.

어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스.


객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며,

인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미.


      • 인스턴스 변수 (Instance Variable)
        • 클래스 영역 안에 생성
        • 클래스의 인스턴스를 생성할 때 만들어짐
        • 독립적인 공간을 가짐. 즉, 서로 다른 값을 가질 수 있음
        • 고유한 상태를 유지해야 할 경우 인스턴스 변수를 선언

      • 클래스 변수 (Class Variable)
        • 인스턴스 변수 앞에 static이 붙은 변수
        • 모든 인스턴스가 공통된 저장공간(변수)을 공유
        • 한 클래스의 모든 인스턴스들이 같은 값을 가지게 할 경우 클래스 변수로 선언
        • '클래스 이름.클래스변수' 와 같이 사용
        • 변수 앞에 public을 붙이면 전역변수


      • 지역 변수 (Local Valiable)
        • 메서드 안에서만 선언, 사용 가능함
        • for, while 문 등에서 선언된 변수는 모두 지역변수
        • {}를 벗어나면 소멸됨



class Card {
  String kind;     // 무늬  (인스턴스 변수)
  int number;     // 숫자  (인스턴스 변수)
static int width = 100; // 폭 (클래스 변수) static int height = 250; // 높이 (클래스 변수) }


Card 인스턴스는 

무늬(kind)와 숫자(number)가 모두 다르니 인스턴스 변수로 선언.

각 카드의 폭(width)과 높이(height)는 모든 인스턴스가 같은 값을 가지므로 클래스 변수로 선언.


카드의 폭과 높이를 변경하면 모든 카드의 폭과 높이가 변경된다. (하나하나 바꿀 필요가 없다는 뜻)

728x90
반응형

'Java' 카테고리의 다른 글

27_Scanner  (0) 2016.09.26
25_생성자 예제  (0) 2016.09.23
23_HashMap  (0) 2016.09.07
18_Eclipce 자주쓰는 단축키  (0) 2016.08.30
5_Iterator  (0) 2016.08.22