Study

[JAVA] 변수의 종류

jeonniu 2022. 4. 12. 19:46
변수(Variable) 란?

데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간

 

 

 

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

1. 인스턴스 변수 (Instance variables)

- 클래스 영역에 선언된다.

- 클래스의 인스턴스를 생성할 때 만들어진다.

- 인스턴스 변수 값을 읽어오거나 저장하기 위해서는 먼저 인스턴스 [각주:1]를 생성해야 한다.

 


인스턴스 변수 생성
인스턴스 변수 선언

 

 

 


 

2. 클래스 변수 (Class variables)

- 인스턴스 변수 앞에 static을 붙인다.

- 클래스가 처음 호출될 때 시작하여 프로그램이 끝날 때 소멸한다. 

- 인스턴스 변수와 다르게 인스턴스를 생성하지 않고도 언제든지 바로 사용할 수 있다.

- 자주 사용되며 변함이 없는 자료일 경우 해당 클래스 변수로 선언한다.

 

클래스 변수 생성
클래스 변수 선언

 

 


 

3. 지역 변수 (Local variable)

- 메소드[각주:2] 안에서만 유효하며, 다른 곳에서는 부를 수 없다.

- 메소드가 실행 될 때 메모리를 할당 받고, 메소드가 끝나면 소멸되어 사용할 수 없다.

 

지역 변수 생성
지역 변수 선언 

 

 

 

앞에 설명한 내용을 표로 정리하면 다음과 같다.

 

변수의 종류 선언 위치 생성 시기
인스턴스 변수 클래스 영역 인스턴스가 생성되었을 때
클래스 변수 클래스 메모리에 올라갔을 때
지역 변수 클래스 이외의 영역 변수 선언문이 수행되었을 때

 

 

 

 

다음은 각 변수들을 생성 및 선언하는 전체 코드이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package test;
 
 
class example {
    int instanceNum = 10;        // 인스턴스 변수
    static int classNum = 20;    // 클래스 변수
 
    int lacalNum() {                // 메소드
        int lacalNum = 30;        // 지역 변수
        return lacalNum;
    }
}
 
public class exampleTest {
    public static void main(String[] args) {
        example ex = new example();                // 객체 생성
        
        System.out.println(ex.instanceNum);        // 인스턴스 변수: 인스턴스 생성 후 사용
        System.out.println(example.classNum);    // 클래스 변수: 모든 인스턴스가 공통으로 사용하므로 인스턴스 생성을 하지 않고 사용
        System.out.println();
        
        // System.out.println(ex.lacalNum);    // localNum은 메소드 내에서만 사용하는 것이기 때문에 에러
        System.out.println(ex.lacalNum());    // 지역 변수: 메소드 또는 반복문 안에서만 사용 가능
    }
}
cs

 

 

 

  1. 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체 [본문으로]
  2. 특정 기능을 정의한 코드들의 집합 [본문으로]