[JAVA] 변수(variable)의 종류

2020. 3. 26. 02:13JAVA

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

선언 위치에 따른 변수에는 크게 두 가지 멤버 변수, 지역 변수 가 있다.

이 둘의 차이점 은 간단하다. 선언 위치가 클래스 영역인지 아닌지 로 판단이 가능하다.

또한, 멤버 변수에도 두 가지로 나뉘는데 인스턴스 변수, 클래스 변수로 나뉜다.

우선, 멤버 변수부터 알아보도록 하겠다.

 

 

멤버 변수

  1. 인스턴스 변수 : class 내부에 위치하며 객체를 생성해야만 사용이 가능하다.                                                                                 ex) int itnVariable = 100; //클래스 내부 일 경우
  2. 클래스 변수 : 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