선언 위치에 따른 변수의 종류
선언 위치에 따라 종류가 3가지로 나뉜다.
(1) iv 인스턴스 변수 (2) cv 클래스 변수(static, 공유 변수) (3) lv(지역 변수)
코드로 구분해 보면 다음과 같다.
class Variables{
int iv; //인스턴스 변수
static int cv; //클래스 변수
void method(){
int lv =0; //지역 변수
}
}
(1) iv(instance variable)
인스턴스가 생성되었을 때 생성
Time class가 있다고 가정할 때, "int hour; int min; int sec;" 이것들을 iv라 할 수 있음!
언제 생성됨? 객체를 생성할 때, 만들어짐
객체는 iv를 묶어놓은것! 이라고 이해하면 쉽다. (엄밀히 얘기하면 틀린 말이지만, 일차적인 이해를 위해서는 이렇게 생각하는 것이 좀 더 쉬울 것)
(2) cv(class variable)
클래스가 메모리에 올라갈 때 생성
클래스(설계도가)필요할 때 만들어짐 -
(3) lv(local variable)
변수 선언문이 수행되었을 때 생성
영역은 크게 클래스 영역, 메소드 영역으로 나뉜다.
클래스 영역에서 선언된 변수를 iv라 하고, static한 변수의 경우는 cv라 한다.
메소드 영역(클래스 영역 이외의 영역)에서 선언된 변수를 lv라 한다.
♣ 클래스 영역에서 선언되는 변수는 인스턴스 변수와 클래스 변수가 있는데 이 둘의 차이는 무엇일까?
객체의 속성 중 개별적인 속성을 갖는 변수는 인스턴스 변수!
객체의 속성 중 공통적인 속성을 갖는 변수는 클래스 변수! static을 붙임
카드로 예시들면 조금 쉽다.
class Card{
//개별적인 속성
String kind; //무늬
int number; //숫자
//공통적인 속성
static int width = 100; //폭
static int height = 250; //높이
}
해당 클래스를 사용하려면 다음과 같이 쓸 수 있다.
Card c = new Card(); //객체 생성
//객체의 사용
c.kind = "HEART";
c.number = 5;
Card.width =200;
Card.height=300;
클래스 변수를 사용할 때, 참조변수(c.width, c.height)로 써도 되지만, 권장하지 않음
'Programming Language > Java' 카테고리의 다른 글
[JAVA] 호출 스택(call stack) (0) | 2021.07.16 |
---|---|
[JAVA] 메서드와 return문 (0) | 2021.07.15 |
[JAVA] 클래스의 정의 (0) | 2021.07.13 |
[Java] 객체의 생성과 사용 (0) | 2021.07.10 |
[JAVA] 배열을 복제하는 방법 - clone()메소드 (0) | 2021.02.11 |