[Java/객체지향] 변수

2024. 8. 16. 20:02CS/Java

선언 위치에 따른 변수의 종류

 클래스 영역(iv, cv)

  • 선언문만 가능:→변수선언, 메서드선언(정의)
  • 선언문의 순서 없음
  • 클래스 영역 전체에서 유효

(1) 클래스 변수(cv) - 공통 속성

  • static + iv
  • 자동생성O → 객체 생성이 필요 X, 아무때나 사용 가능
  • 생성시기: 클래스가 메모리에 올라갈 때 = 설계도가 필요할 때

(2) 인스턴스 변수(iv) - 개별 속성

  • 자동생성X → 객체 생성 필요O
  • 생성시기: 인스턴스가 생성되었을 때 =객체가 생성되었을 때 만들어짐
  • 객체를 생성하면, 클래스의 내용을 보고, 클래스에 정의되어있는 대로 만들어짐

메서드영역(lv)

  • 메서드 내에서 선언된 변수

(1) 지역변수(lv)

  • 생성시기: 변수 선언문이 수행되었을 때
  • 유효범위: 메서드가 생겨서 메서드가 끝날 때까지 유효)
객체: iv변수를 여러 개 묶어 놓은 것

클래스 변수와 인스턴스 변수

iv

  • 개별 속성
  • 인스턴스(객체)가 생성될 때마다 생성됨 → 각 인스턴스(객체)마다 각기 다른 값을 유지 가능

cv

  • 공통 속성
  • 모든 인스턴스(객체)가 하나의 저장공간을 공유 → 항상 공통된 값
class Card{
//iv = 개별 속성
String kind;
int number;

//cv = 공통 속성
static int width = 100;
static int height = 250;
}

Card c = new Card();//객체 생성
//iv는 객체생성필요 -> 참조변수 사용하여, 객체 사용
c.kind = "HEART";
c.number = 5;

//cv는 자동객체생성 -> 참조변수필수X, 클래스이름 사용
Card.width = 200;
Card.height = 300;
//-> 참조변수 사용도 가능. but, 권장X