Java 문법 (9) - Final
Java 문법 (9) - Final
Final 변수
final
이 붙은 변수는 최초에 값을 할당할 때를 제외하고 값을 변경할 수 없습니다. 매개변수에 final
이 붙으면 메서드 내부에서 매개변수의 값을 변경할 수 없습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
}
static void method(final int parameter) {
//parameter = 20; 컴파일 오류 변경 불가능
}
}
클래스의 필드에서 사용할 때는 생성자를 통해서 초기화 해주고, 그 이후에는 변경할 수 없도록 코드를 작성할 수 있습니다.
예시의 final int value2 = 10;
처럼 초기화 해줄 수 있지만, 모든 객체가 10이라는 값을 고정적으로 갖게 됩니다. 이렇게 하면 메모리 낭비가 될 수 있고, 의미가 없기 때문에 이처럼 사용하지는 않고 상수
를 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
package final1;
//final 필드 - 생성자 초기화
public class ConstructInit {
final int value;
final int value2 = 10; // 모든 객체가 10으로 고정, 의미가 없음.
public ConstructInit(int value) {
this.value = value;
}
}
상수
상수는 변하지 않고 항상 일정한 값을 갖는 수를 말합니다. 자바에서 보통 단 하나만 존재하는 변하지 않는 고정된 값을 상수라고 합니다. 상수는 static final
키워드를 사용합니다. 관례로 변수의 이름은 대문자를 사용하고 _
(언더 스코어로) 구분합니다. ex) MAX_NUMBER
보통 상수는 애플리케이션 전반에서 사용되기 때문에 public
을 주로 사용합니다. 상수는 중앙에서 값을 하나로 관리할 수 있습니다. 런타임 중에는 상수를 변경할 수 없습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
package final1;
//상수
public class Constant {
//수학 상수
public static final double PI = 3.14;
//시간 상수
public static final int HOURS_IN_DAY = 24;
public static final int MINUTES_IN_HOUR = 60;
public static final int SECONDS_IN_MINUTE = 60;
//애플리케이션 설정 상수
public static final int MAX_USERS = 1000;
}