2020. 3. 26. 02:13ㆍJAVA
선언 위치에 따른 변수의 종류
선언 위치에 따른 변수에는 크게 두 가지 멤버 변수, 지역 변수 가 있다.
이 둘의 차이점 은 간단하다. 선언 위치가 클래스 영역인지 아닌지 로 판단이 가능하다.
또한, 멤버 변수에도 두 가지로 나뉘는데 인스턴스 변수, 클래스 변수로 나뉜다.
우선, 멤버 변수부터 알아보도록 하겠다.
멤버 변수
- 인스턴스 변수 : class 내부에 위치하며 객체를 생성해야만 사용이 가능하다. ex) int itnVariable = 100; //클래스 내부 일 경우
- 클래스 변수 : class 내부에 위치하며 인스턴스 변수 앞에 static을 붙이면 생성이 가능하다. ex) static int itnVariable = 100; //클래스 내부 일 경우
이 둘의 차이점은 무엇일까?
첫 번째. 인스턴스 변수는 각 객체마다 독립적 저장 공간을 유지하지만 클래스 변수는 공통된 저장 공간을 가지게 된다.
두 번째. 메모리 생성 시기가 다르다. 인스턴스 변수 같은 경우는 객체가 생성될 때 메모리가 생성되고, 클래스 변수는 이름 그대로 클래스가 메모리에 올라올 때 생성이 된다.
세번째. 클래스 변수 같은 경우는 public 일 경우 프로그램 내에서 어디든지 접근이 가능하며, 접근 방식
또한 인스턴스화 하지 않고 클래스 이름. 클래스 변수 명으로 접근이 가능하다.
언제 사용되는 것 일까?
인스턴스 변수 같은 경우는 각각의 인스턴스마다 고유의 값을 가져야 할 때 사용된다. 반대로, 클래스 변수 같은 경우는 공통적인 값을 가져야 할 때 사용한다.
지역 변수
간단하게 설명해서 멤버 변수 이외에 나머지 변수를 말한다. 즉, 클래스 영역이 아닌 곳에서 선언된 모든 변수를 뜻한다.
지역 변수의 특징으로는 지역변수가 선언된 메서드 가 실행될 때 메모리가 할당되며 그 메서드가 종료되면 지역 변수는
사라진다.
예제
예제 해석
첫 번째.
Variable라는 클래스 내부에서 선언된 두 가지 변수는 멤버 변수이며, instanceVe는 인스턴스 변수,
클래스 내부 + static 인 구조를 보았을 때 clsVe는 클래스 변수 인걸 확인할 수 있다.
두 번째.
클래스 변수를 출력했을 때(9번째 줄) 인스턴스화 하지 않고
Variable(클래스명). clsVe(클래스 변수)로 접근이 가능한 걸 확인할 수 있다.
세 번째.
인스턴스 변수 같은 경우는 인스턴스화(11번째 줄) 즉 new를 해야 접근이 가능한 걸 확인할 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] Map(HashMap) (1) | 2020.04.22 |
---|---|
[JAVA] List - ArrayList (2) | 2020.04.12 |
[JAVA] 배열(Array)의 응용 (0) | 2020.04.07 |
[JAVA] 배열(Array) (0) | 2020.04.07 |
[JAVA] 변수(variable) & 상수(Constant) (0) | 2020.03.24 |