변수는 크게 클래스 영역과 메서드 영역으로 나뉜다.
변수와 메서드의 순서는 상관없다.
클래스 영역 (클래스의 시작 ~ 클래스의 끝)
- iv (인스턴스 변수)
- cv (클래스 변수(static변수, 공유변수)) // static + iv
- 변수 선언만 가능
메서드 영역 (메서드의 시작 ~ 메서드의 끝)
- lv (지역 변수)
- 메서드 선언(메서드 정의)만 가능
변수의 종류와 선언위치, 생성시기
- 지역변수(lv)는 변수 선언문이 수행되었을 때 생성되고, 메서드 종료시 자동 제거된다.
- 클래스변수(cv)와 인스턴스변수(iv)는 클래스영역 전체에서 사용 가능하다.
- 인스턴스변수(iv)는 인스턴스(객체)가 생성되었을 때 생성되고, 클래스변수와 달리 static이 안 붙는다.
- 객체 = iv를 묶어놓은 것(변수를 여러 개 묶어놓은 것)
- 클래스변수(cv)는 클래스가 메모리에 올라갈 때 (=클래스가 필요할 때(=객체 만들 때)) 생성되고, 자동으로 만들어지므로 객체생성을 안해도 Ok!
- cv와 iv의 차이 = cv는 객체생성 안해도 ok(아무때나 사용 가능) / iv는 객체생성을 해야 사용가능
Ex) 포커 카드 3장 (각 별 1장=객체)
속성 = 무늬 / 숫자 = 객체마다 다르게 유지되어야 하는 값 & 폭 / 높이 = 모든 객체가 공통으로 가지는 값
- 개별적으로 값을 가져야 하는 것은 iv로,
- 공통적으로 값을 가져야 하는 것은 cv로 한다.
생성 과정
1. 객체 생성Card c = new Card();
- 객체 사용
Card c = new Card(); c.kind = "HEART"; c.number = 5; c.width = 200; -> Card.width = 200; (cv는 클래스이름이 붙어야 한다!) c.heigth = 300; -> Card.height = 300; (cv는 클래스이름이 붙어야 한다!)