본문 바로가기
Java/study

로컬 객체의 로컬 변수, 매개 변수 사용

by avvin 2019. 4. 19.


로컬객체(로컬 클래스, 익명 객체, 람다식)의 로컬변수, 매개변수 사용


로컬 객체는 메서드 실행이 끝나고 힙 메모리에 존재해서 계속 사용될 수 있다. 매개변수나 로컬변수는 메서드 실행이 끝나면 스택 메모리에서 사라지기 때문에 로컬 객체에서 사용할 경우 문제가 발생한다.

자바는 이 문제를 해결하기 위해 컴파일 시 로컬 객체 내에서 사용하는 매개변수나 로컬변수의 값을 로컬 객체 내부에 복사해두고 사용한다.

매개변수나 로컬변수의 값이 변경되면 로컬객체에 복사해 둔 값과 달라지는 문제가 발생하므로 매개변수나 로컬변수를 final로 선언하여 수정을 막는다.

(자바 8부터는 매개변수, 로컬변수에 final 선언을 하지 않아도 로컬 객체에 쓰는 순간 자동으로 final 특성을 갖게 한다. )

final 특성(초기화 한번만 가능)을 갖는 변수는 로컬 객체 내부에서든 외부에서든 수정하지 못한다.



'Java > study' 카테고리의 다른 글

스트림과 병렬처리  (0) 2019.04.20
컬렉션 프레임워크(Collection Framework)  (0) 2019.04.19
람다식(Lambda Expression)  (0) 2019.04.18
제네릭(Generic)  (0) 2019.04.17
멀티스레드 Synchronized Account Testing  (0) 2019.04.16