본문 바로가기
프로그래밍 언어

자바에서 지역변수가 초기화 되지 않는 이유?

by dongR 2022. 3. 2.

변수의 종류) 

1. 클래스 변수 

: static이 붙은 변수로 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. 

2. 인스턴스 변수 

: 인스턴스를 생성할 때 만들어지는 변수로 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우 인스턴스 변수로 선언한다. 

3. 지역변수 

: 클래스 영역 이외의 영역에 위치되는 변수로 메서드 영역, 반복문 영역, {}(블럭) 영역안에 선언한 변수를 지역변수라고 부른다. 

4. 멤버변수

: 클래스 변수와 인스턴스 변수를 묶어서 멤버변수라고 부른다.  

static 붙은 것은 클래스 변수를 의미하며 static 붙지 않은 것은 인스턴스 변수이다. 

 

변수의 생성시기) 

1. 클래스 변수 : 클래스가 메모리에 올라갈 때 

2. 인스턴스 변수 : 인스턴스가 생성되었을 때 

3. 지역변수 : 변수를 선언했을 때 

 

 

필드에서 선언된 변수는 값을 할당하지 않아도 자동으로 자료형에 대한 초기값을 갖지만, 지역변수는 자동으로 초기화가 안된다. 그래서 지역변수를 선언하고 바로 사용할 때는 반드시 초기화를 해줘야 한다. 

public class Tv{
	private int price; // 초기값 : 0
}

public class Home{
 	    
 	String name; // 초기값 : NULL 
    int price1; // 초기값 : 0 
    
    void getTv(){
        int price2; 
		Tv tv = new Tv(); 
        tv.setPrice(price1); // 지역변수는 자동초기화가 안되므로 초기화 에러 발생 
        tv.setPrice(price2); // 멤버변수는 자동초기화가 되므로 SET 가능 
    }
}

 

변수의 메모리상 소멸시기) 

1. 전역변수(클래스, 인스턴스 변수)  : 프로그램이 실행되어서 종료될 때까지 메모리상에 남아있음 

---> 얼만큼의 전역변수가 사용되야지 메모리 상에 과부화를 줄 수 있을까? 

2. 지역변수 : 메서드 실행이 끝난 뒤, {} 또는 반복문이 끝난 뒤 

 

 

참고 : https://m.blog.naver.com/heartflow89/220956313502

https://kd3302.tistory.com/780

 

'프로그래밍 언어' 카테고리의 다른 글

자료형  (0) 2022.03.19
싱글스레드와 멀티스레드의 장단점  (0) 2022.03.03
자바스크립트 입문 1 (async,defer)  (0) 2021.05.20
websocket  (0) 2021.03.16
람다식  (0) 2021.03.07