처음부터 차근차근

자바 지역변수 자동 초기화에 대하여 본문

프로그래밍/JAVA

자바 지역변수 자동 초기화에 대하여

_soyoung 2022. 9. 2. 18:18
반응형

variable 변수 might not have been initialized
변수가 초기화되지 않았을 수 있습니다.

메서드 안에다 변수를 선언하고 + 연산을 하려고 했을 때 나온 오류이다.
나는 자바에서 변수를 선언하면 초기값을 자동으로 넣어주는 걸로 알고 있었다.

변수 타입에 따른 기본값

자료형 기본값
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\n0000'
boolean false
참조형 변수 ex) String, Object... null

이렇게...

https://stackoverflow.com/questions/2448843/variable-might-not-have-been-initialized-error

Variable might not have been initialized error

When I try to compile this: public static Rand searchCount (int[] x) { int a ; int b ; ... for (int l= 0; l<x.length; l++) { if (x[l] == 0) a++ ; el...

stackoverflow.com

하지만 이 글을 통해서 자세한 내용을 알 수 있었다.

If you declare a field at class level they get default values according to their type. If you declare a variable at method level or as a block (means anycode inside {}) do not get any values and remain undefined until somehow they get some starting values ie some values assigned to them.

클래스 수준에서 필드를 선언하면 유형에 따라 기본값을 얻습니다. 메소드 수준 또는 블록 ({} 내부의 코드)에서 변수를 선언하면 값을 가져 오지 않고 어떻게 든 시작 값 즉 할당 된 일부 값을 얻을 때까지 정의되지 않은 상태로 유지됩니다.

자바는 클래스 변수와 인스턴스 변수는 기본 값을 대입해주지만 지역 변수는 기본 값을 대입해주지 않는다고 한다.
변수 종류 예시

class TestClass {
    static int a; // 클래스 변수
    int b; // 인스턴스 변수

    public int add(int a, int b) {
        int sum; // 지역 변수
        sum = a + b;
        return sum;
    }
}

그래서 메서드 안에 변수를 선언하고 사용하려면 반드시 초기화를 해줘야 한다.

너무 기본적인 내용이라 업로드하는게 맞나 고민했는데, 한 번 잊어버렸던 내용이기도 하고, 인터넷에 초기화를 해줘야 한다는 얘기만 나오고 이 내용은 잘 없어서 한 번 작성해봤다!

반응형
Comments