📚 참고
자바의 정석 기초편 (객체지향개념만)

 

 

 

 

 

 

 

변수의 선언위치

 

1. 클래스 영역

 

  • iv, cv가 위치해있다.
  • 변수 선언문만 가능 (대입문 X)

 

 

 

 

2. 메서드 영역

 

  • lv가 위치해있다.

 

class Variables {
    // 클래스 영역
    int iv;			// 인스턴스 변수
    static int cv;	// 클래스 변수(static 변수)
    
    
    void method() {
    	// 메서드 영역
    	int iv = 0;	// 지역변수
    }

}

 

 

 

 

 

 

 

변수 종류

 

1. 클래스 변수 (cv)

 

  • 클래스 영역에 위치
  • 클래스가 메모리에 올라갈 때 생성 (자동으로 생성됨)

 

CPU는 RAM하고만 작업

 

 

 

 

클래스 변수의 사용

 

  • 참조변수를 사용하여 cv를 사용하는건 가능하지만 권장하지 않는다. 참조변수를 사용함으로써 cv를 인스턴스 변수라고 착각할 가능성이 있기 때문이다.

 

Card c = new Card();
c.kind = "HEART";
c.number = 5;

// 참조변수 사용하는건 가능하지만 권장X
c.width = 200;
c.height = 300;

// 권장
Card.width = 200;
Card.height = 300;

 

 

 

 

2. 인스턴스 변수 (iv)

 

  • 클래스 영역에 위치
  • 인스턴스가 생성 되었을 때 생성

 

 

 

 

3. 지역변수 (lv)

 

  • 클래스 영역 이외에 위치 (메서드, 생성자, 초기화 블럭 내부)
  • 변수 선언문이 수행되었을 때 생성
  • 메서드 유효범위 내에서만 존재

 

 

 

 

 

 

 

클래스 변수와 인스턴스 변수의 차이

 

  • 개별 속성 (객체마다 다르게 유지) 인스턴스 변수
  • 공통 속성 (객체마다 공통되게 유지) 클래스 변수

 

class Card {
    // 개별속성
    String kind;	// 무늬
    int number;		// 숫자
    
    // 공통속성
    static int width = 100;		// 폭
    static int height = 250;	// 높이
}

 

 

 

 

 

 

 

 

 

 

'JAVA > 객체지향개념' 카테고리의 다른 글

기본형 매개변수, 참조형 매개변수 차이점  (0) 2021.03.09
호출 스택 (Call Stack)  (0) 2021.03.07
메서드 (Method)  (0) 2021.03.06
클래스와 객체  (0) 2021.03.02
객체지향 언어  (0) 2021.03.02