지역변수는 초기화되지 않는다

최창효·2023년 8월 31일
0
post-thumbnail

자바의 변수

  • 자바에서 변수는 크게 멤버변수지역변수로 나뉩니다.
    • 멤버변수는 선언 위치가 클래스 영역입니다.
    • 지역변수는 선언 위치가 메서드나 생성자 내부입니다. (클래스 영역에서 생성되지 않는 변수는 모두 지역변수입니다.)
  • 멤버변수는 또 다시 클래스 변수인스턴스 변수로 나뉩니다.
    • 클래스 변수는 static으로 선언된 변수로 클래스가 메모리에 올라가는 시점에 초기화 됩니다.
    • 인스턴스 변수는 인스턴스가 생성되는 시점에 초기화 됩니다.
public class Tmp{
	static int a; // 멤버변수 중 클래스 변수
    int b; // 멤버변수 중 인스턴스 변수
    
    public static void call(){
    	int c; // 지역변수
    }

}

지역변수는 초기화되지 않는다.

  • 멤버변수는 값을 할당하지 않으면 해당 타입의 기본값으로 초기화가 일어납니다.

    public class Tmp {
        // 멤버변수
        static int a;
        String b;
    
        public void call() {
            System.out.println(a);
            System.out.println(b);
        }
    
        public static void main(String[] args) {
            Tmp tmp = new Tmp();
            tmp.call();
        }
    
    }
    
    • 멤버변수로 a와 b를 선언한 뒤 이를 출력해 봤습니다. 우리는 a와 b에 값을 할당해주지 않았지만 각각의 타입에 맞는 기본값이 채워져 0, null이라는 값을 확인할 수 있습니다.
  • 지역변수는 값을 할당하지 않으면 컴파일 에러가 발생합니다.

    • call 메서드 안에서 선언된 c변수는 값을 초기화해주지 않았기 때문에 빨간색 밑줄로 표시됩니다.
    • 위 코드를 실행시키면 The local variable c may not have been initialized라는 에러가 발생하게 됩니다.
profile
기록하고 정리하는 걸 좋아하는 개발자.

0개의 댓글