로컬객체(로컬 클래스, 익명 객체, 람다식)의 로컬변수, 매개변수 사용
로컬 객체는 메서드 실행이 끝나고 힙 메모리에 존재해서 계속 사용될 수 있다. 매개변수나 로컬변수는 메서드 실행이 끝나면 스택 메모리에서 사라지기 때문에 로컬 객체에서 사용할 경우 문제가 발생한다.
자바는 이 문제를 해결하기 위해 컴파일 시 로컬 객체 내에서 사용하는 매개변수나 로컬변수의 값을 로컬 객체 내부에 복사해두고 사용한다.
매개변수나 로컬변수의 값이 변경되면 로컬객체에 복사해 둔 값과 달라지는 문제가 발생하므로 매개변수나 로컬변수를 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 |