-
<Java> 로컬 클래스와 지역 변수의 생명 주기JAVA 2025. 2. 25. 23:10반응형
1. 클래스 선언부에서 실행 코드는 허용되지 않음
클래스 선언부에서 변수 값 재할당할 수 없는 이유에 대해서는 선언부에 실행 코드를
작성할 수 없기 때문이라고 설명하였다.
2. 클래스 선언부에서 실행 코드는 허용되지 않음
참고로 JDK 8부터는 final이 생략된다.
로컬 클래스의 객체는 메소드 실행이 종료되면 없어지는 것이 일반적이지만, 메소드가 종료되어도 계속 실행 상태로 존재할 수 있다. 예로 들어 로컬 스레드 객체를 사용하는 것이다. 메소드를 실행하는 스레드와 다르므로 메소드가 종료된 후에도 로컬 스레드 객체는 실행 상태로 존재할 수 있다.
하지만, 로컬 클래스에서 지역변수 var를 참조하고 있다면 var가 사라진 후에도 접근해야 하는 문제가 생긴다. JAVA 이를 해결하지 위해 로컬 클래스에서 지역 변수를 참조한다면 지역변수는 final 특성을 가지는 변수로 만들어야 한다는 규칙을 만들었다.
final 변수는 JVM이 내부적으로 그 변수를 복사해서 사용하기 때문에, 값을 변경하면 원본 변수와 복사된 값이 달라질 수 있어서 변경을 허용하지 않는다.
'JAVA' 카테고리의 다른 글
<Java> Thread 상속과 Runnable 구현의 차이점 및 동기화 메소드 선언 (1) 2025.03.04 <Java> 클래스 선언부에서 변수 값 재할당할 수 없는 이유 (0) 2025.02.25 [Java] 인터페이스란? (2) 2025.02.13 [Java] 추상 클래스란? (0) 2025.02.12 [Java] 싱글톤이란? (0) 2025.02.12