지역변수 초기화 이유...(with자바)

김성수·2022년 9월 5일
0

자바

목록 보기
1/5

자바에서 클래스 안에 들어가는 변수가 세 가지가 있다.

static 제어자가 붙어 해당 클래스로부터 만들어진 인스턴스들이 값을 공유하는 클래스 변수/static 변수/cv..

static 제어자가 붙지않고, 해당 클래스로부터 만들어진 인스턴스들이 각자의 고유의 값을 가지는 인스턴스변수 / instance 변수 / iv...

그리고 메서드 영역 안에서 선언 되는 지역 변수 / Local 변수 / lv...

클래스 영역 내부에 있지만, 메서드 영역 안에 있지않은 두 가지 변수 클래스 변수와 인스턴스 변수는 변수 선언시 값을 초기화하지 않아도, 타입의 기본값에 맞는 값을 자동적으로 넣어준다.

하지만, 지역변수는 선언시 초기화반드시 해줘야한다.

선언자체는 괜찮다만 초기화하지 않으면, 반드시 에러가 발생한다.

지역변수 같은 경우, 메모리 구조에서 호출 스택(Call Stack)에 저장되는데, 호출스택은 재사용이 빈번하다..
재사용이 빈번하다는 것은 아주 짧은 시간동안 같은 메모리공간을 여러메서드가 사용한다는 말이다.

그런데 메서드가 호출될 때마다, 0으로 초기화되게 하면 성능이 떨어진다.

그래서 성능을 올리기 위해서 0으로 항상 초기화하는 것이 아니라 새로운 값을 덮어쓰는 방식으로 처리한다.

왜냐하면 지역변수는 메서드가 실행될 때만 사용되고, 메서드 종료시 사라진다.
재사용이 빈번한데 메서드가 호출될 때마다 메모리공간을 0으로 넣으면 성능이 떨어진다.
메서드는 빨리 실행되고 제거되어야 한다(그래서 생명주기도 짧음).

그래서 하나의 과정을 생략 가능한 점에서 성능이 올라가기도 하고(컴파일러가 일이 줄어든다.)
메서드를 다시 사용할 때, 해당 메서드 안의 지역변수가 이전에 메서드를 사용함으로 지역변수가 어떻게 값이 바뀌었는지 알 수 없기 때문에, 메서드가 실행될 때마다 새로운 값을 덮어쓰게 함으로써 메서드 사용자가 원하는 값을 도출할 수 있도록 하기위해서 지역변수를 반드시 초기화 해야한다!!

결론은 지역변수 초기화는 필수!

profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

0개의 댓글