[Java] Java의 변수 (클래스 변수, 인스턴스 변수, 지역 변수)

Hoehenflug·2022년 2월 22일
0

📍 선언 위치에 따른 변수의 종류(클래스 변수, 인스턴스 변수, 지역 변수)에 대해 알아보자.


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

  • Java에서의 변수에는 클래스 변수, 인스턴스 변수, 지역 변수가 있다.
  • 변수의 종류를 결정짓는 것 : 변수가 선언된 위치

🌚 코드로 보는 변수의 종류

다음 코드를 통해 class 영역과 method 영역을 우선 구분해보자.

public class testVariable {
	// class 영역
	int iv; // 인스턴스 변수
	static int cv; // 클래스 변수
	
	void method() {
    	// method 영역
		int lv; // 지역 변수
	}
}

class 내부를 class 영역, method 내부를 method 영역이라고 구분한다.
위 코드에는 3개의 int형 변수가 선언되어 있다.

  • iv, cv : 클래스 내부에 선언되어 있다 => 멤버 변수
    • cv : static으로 선언되었으니 클래스 변수
    • iv : 인스턴스 변수
  • lv : 메서드 내에 선언되어 있다 => 지역 변수

🌛 인스턴스 변수

  • 인스턴스가 생성될 때 생성
    • 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 한다.
  • 인스턴스 별로 다른 값을 가질 수 있다 => 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언한다!

🌜 클래스 변수

  • 인스턴스 변수에 static만 붙여주면 된다.
  • 인스턴스 변수와 달리 클래스 변수는 모든 인스턴스가 공통된 값을 공유한다 => 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야할 때 클래스 변수로 선언한다!
  • 클래스가 로딩될 때 생성돼 해당 클래스가 종료될 때까지 유지된다 => 메모리에 딱 한 번만! 올라간다.
  • public을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역변수가 된다.
    • 이 때, 인스턴스 변수에 접근할 때와 달리 인스턴스를 따로 생성하지 않고 클래스 이름.클래스 변수명 을 통해 접근 가능하다.
public class testVariable {
    public static int cv;
}

// 접근 방법
testVariable.cv

🌞 지역 변수

  • 메서드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수
  • 메서드가 실행될 때 메모리를 할당받고 메서드가 끝나면 소멸돼 사용할 수 없다.

💪🏻 기록

변수의 선언 위치에 따른 종류에 대해 정리해봤다. 알고 있던 부분이고 코드에 적용해 사용하고 있었지만 이렇게 이론으로 한 번 정리하니 정확히 이해가 된 느낌이다! 앞으로 모든 코드는 정확히 알고 사용하는 걸로!

0개의 댓글