본문 바로가기

Programming/JAVA

java : 문득 왜 로컬변수는 초기화를 안할까에 대한 생각.

field variable. heap memory에 올라가는 변수.

local variable. stack memory에 올라가는 변수.


heap, static memory에 올라가는 기본형 변수들은 초기화가 된다.

그러나 stack memory에 올라가는 변수들은 초기화되지 않는다.


stack memory 의 특성은 push, pop 등을 하며 어떤 목적을 가지고 계산을 하는데에 쓰이는 메모리.

즉, local variable은 프로그래머가 어떤 목적을 가지고 선언을 하며 그 목적은 계산이다.

data를 선언할 때 이미 목적을 가지고 있기 때문에

분명 data를 할당할 것이라 생각하기때문에 설계차원에서 초기화를 하지 않도록 설계되었다. (내 생각)

대신 heap memory에는 기본으로 초기화를 해준다.

그 값이 무엇이든 클래스가 처음 생성될 때 가지게 되는데 그것은 data 자체라고 보기 때문.

클래스의 생성은 계산이 아니라 하나의 엔티티(=객체)로서 의미를 가지기 때문입니다.

다만 field variable로 class라면 어떤 엔티티를 연결해주어야할지

알 수 없기때문에 초기화를 하지 않는다. (내 생각)