본 글은 김영한 님의 『김영한의 실전 자바 - 기본편』 강의를 학습하며 정리한 내용입니다.
강의 자료에 포함된 일부 코드와 이미지를 참고하여 발췌·활용하였습니다.
자바 기본기를 제대로 다지고 싶으시다면, 아래 링크에서 강의를 확인해 보세요
본 게시물은 파트너스 활동의 일환으로 작성되었으며, 구매 시 소정의 수수료를 받을 수 있습니다.
final 변수
변수에 final 키워드가 붙으면 더는 값을 변경할 수 없게 된다.
그럼 final 을 어떻게 사용할 수 있는지, 사용하면 어떻게 되는지 알아보자.
final - 지역 변수
package final1;
public class FinalLocalMain {
public static void main(String[] args) {
//final 지역 변수1
final int data1;
data1 = 10; //최초 한번만 할당 가능
//data1 = 20; //컴파일 오류
//final 지역 변수2
final int data2 = 10;
//data2 = 20; //컴파일 오류
method(10);
}
//final 매개변수
static void method(final int parameter) {
//parameter = 20; 컴파일 오류
}
}
final 을 지역 변수에 설정할 경우 특징은 아래와 같다.
- 최초 한번만 할당할 수 있고, 이후에 변수의 값을 변경하려면 컴파일 오류가 발생한다.
- 바로 초기화 한 경우 이미 값이 할당되었기 때문에 값을 할당할 수 없다.
- 매개변수에 final 이 붙으면 메서드 내부에서 매개변수의 값을 변경할 수 없다.
- 호출 시점에 사용된 값이 끝까지 사용된다.
final - 필드(멤버 변수)
//final 필드 - 생성자 초기화
public class ConstructInit {
final int value;
public ConstructInit(int value) {
this.value = value;
}
}
//final 필드 - 필드 초기화
public class FieldInit {
static final int CONST_VALUE = 10;
final int value = 10;
}
final 을 필드에 사용할 경우 특징은 아래와 같다.
- 해당 필드는 생성자를 통해 한번만 초기화 할 수 있다.
- 필드에서 초기화하면 이미 값이 설정되었기 때문에 생성자를 통해서도 초기화 할 수 없다.
상수
상수는 변하지 않고, 항상 일정한 값을 갖는 수를 말한다. 자바에서는 보통 단 하나만 존재하는 변하지 않는 고정된 값을 말한다.
이런 이유로 상수는 static final 키워드를 사용한다.
특징
- static final 키워드를 사용한다.
- 대문자를 사용하고 구분은 _(언더스코어) 로 한다.(관례)
- 필드를 직접 접근해서 사용한다.
final 변수와 참조
final 은 변수의 값을 변경하지 못하게 막는다. 기본형 변수에 사용하면 값을 변경할 수 없고, 참조형 변수에 사용하면 참조값을 변경할 수 없다.
그런데 참조 대상의 객체 값은 변경할 수 있다.
public class FinalRefMain {
public static void main(String[] args) {
final Data data = new Data();
//data = new Data(); //final 변경 불가 컴파일 오류
//참조 대상의 값은 변경 가능
data.value = 10;
System.out.println(data.value);
data.value = 20;
System.out.println(data.value);
}
}
# 실행 결과
data.value = 10
data.value = 20
참조형 변수에 final 이 붙으면, 참조값을 다른 값으로 변경하지 못하는 것이다. 이 변수 이외에 다른 곳에 영향을 주는 것이 아니다. 따라서 Data.value 는 값을 변경할 수 있다.
'인프런 > 김영한 자바' 카테고리의 다른 글
| [김영한의 실전 자바 기본편] - 10. 다형성(추상화,인터페이스) (1) | 2025.09.16 |
|---|---|
| [김영한의 실전 자바 기본편] - 9. 상속 (0) | 2025.09.15 |
| [김영한의 실전 자바 기본편] - 7. 자바 메모리와 static (0) | 2025.09.11 |
| [김영한의 실전 자바 기본편] - 6. 접근 제어자 (0) | 2025.09.09 |
| [김영한의 실전 자바 기본편] - 5. 패키지 (0) | 2025.09.09 |