지역 변수와 멤버 변수

성채원·2024년 2월 2일

지역변수

지역 변수란 메소드 안에서 만들어진 변수를 말하며 메소드 안에서만 사용된다. 지역 변수는 메소드를 호출하면 생겨서 메소드가 끝나면 소멸한다. 매개 변수도 지역 변수이다.

int ten(int a) {
	int x = 10;
    return a*x;
}
  • a와 x가 지역 변수이다.
  • a와 x는 ten 메소드 안에서만 사용 가능
  • 지역 변수는 값을 얻어오기 전에 꼭 초기화되어 있어야 함.
public class Class8 {
	public static void main(String[] args) {
    	int a;
        System.out.println(a);
 }

main 메소드 안에서 만들어졌으므로 a는 지역 변수이다. 그런데 a를 초기화 하지 않았으므로 에러가 뜸.

멤버 변수

클래스 영역에서 만들어진 변수를 멤버 변수라고 한다. 메소드 영역 (X), 클래스 변수, 인스턴스 변수로 나뉜다.

  • 클래스 변수: static이 붙은 것
  • 인스턴스 변수: static이 붙지 않은 것
class Variables {

	// 클래스 영역

    int iv; // 인스턴스변수
    static int cv; // 클래스변수

 void method() {

	// 메서드 영역	
	
     int lv = 0; // 지역변수
 }

}
  • 초기화 하지 않으면 기본 자료형 변수에는 0, 레퍼런스 변수에는 null이 대입된다.
public class Class9 {
    int a;
    int b = 100;
    String c;
    String d = "하이~~~~";

    public static void main(String[] args) {
        Class9 ob = new Class9();
        System.out.println(ob.a);
        System.out.println(ob.b);
        System.out.println(ob.c);
        System.out.println(ob.d);
    }
}

멤버 변수는 딱히 초기화 안해도 알아서 0과 null로 나옴.


  • this.a는 멤버 변수 a를 나타냄
  • this가 붙지 않은 a는 지역 변수를 가리킴
  • 변수 앞에 this가 있으면 멤버 변수, 없으면 지역 변수
public class Class10 {
    int a;

    void setA(int a) {
        this.a = a;
    }

    int getA() {
        return a; // 여기서 a는 this.a이다.
    }

    public static void main(String[] args) {
        Class10 ob = new Class10();
        ob.setA(1000);
        System.out.println(ob.a);
        System.out.println(ob.getA());
    }
}

코드 출처: https://velog.io/@mingseok/지역변수-맴버변수

0개의 댓글