작성일: 2023.11.26
상수(常數)란 수식에서 변하지 않는 값을 의미한다.
이렇게 변하지 않는 값은 자바에서 final이라는 예약어를 사용하여 선언한다.
상수를 사용하면 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉽고,
혹시 상수 값을 변경해야 한다고 해도 선언한 부분 한 곳만 변경하여 수정할 수 있어 유지보수가 편해진다.
또 값이 변하면 위험한 경우에 상수를 사용하여 막을 수 있다.
코드에서 값을 보았을 때 의미하는 바를 쉽게 파악할 수 있음 (가독성↑)
값이 수정되더라도 한 곳만 수정해주면 됨 (유지보수 ↑)
값이 변하지 않게 보호해야하는 경우
아래 예제를 보면 더 이해하기 쉬울 것이다.
상수는 fianl을 사용하여 선언한다. 아래에서는 선언과 동시에 초기화하는 방법, 선언 후 초기화 하는 방법을 보여준다. 두 방법 모두 가능하지만, 어떠한 방법을 사용하든 상수의 경우에 값을 선언한 뒤에는 수정할 수 없다.
public static void main(String[] args){
final int MONTH = 12;
MONTH = 11; // compile error!
}
}
이렇게 선언한 후에는 MONTH의 값을 변경할 수 없다. 인텔리제이에서 아래와 같이 이미 값을 할당한 뒤 다시 MONTH에 값을 할당하려고 선언하였을 때 에러가 뜨는 것을 확인할 수 있다.
public class ConstantEx{
public static void main(String[] args){
final int MONTH;
MONTH = 12;
MONTH = 11; //compile error!
}
}
Month라는 이름의 상수를 선언한 후, 값을 할당할 수 있다. 단 값은 1번만 할당해야하니 그 후 할당하려고 시도한다면 모두 컴파일 에러가 발생한다.
선언과 동시에 초기화, 선언 후 초기화하여 상수를 선언할 수 있다.
final로 선언된 변수는 값을 한 번 할당하면 변경할 수 없다.
상수는 위의 단락에서처럼 final을 이용하여 선언하지만 보통 static을 함께 사용하여 static final로 많이 선언하여 사용한다. 클래스에서 사용할 멤버 변수의 값을 고정하겠다는 의미이다.
static은 전역적으로 재사용이 되는, 잘 변하지 않는 변수나 메서드를 사용할 때 주로 사용한다. 선언한 뒤 클래스 호출, 객체 생성을 할 필요없이 바로바로 사용할 수 있다.
public class ConstantEx {
static final int MONTH = 12; //선언과 동시에 초기화
public static void main(String[] args) {
System.out.println(MONTH);
}
}
static final로 변수를 선언하는 경우 선언과 동시에 초기화를 해야한다. static으로만 변수를 선언한다면 선언만 해도 되지만 static fianl의 경우는 선언과 동시에 초기화해야하고 그렇지 않을 경우 컴파일 에러가 발생한다.
대문자로만 구성된 명사로 정한다.
여러 단어로 구성된 이름의 경우 단어 사이에 '_'을 써서 구분한다.
static final int MONTH = 12;
static final String HELLO_WORLD = "hello world!";
MONTH (O)
참고 사이트
https://crazykim2.tistory.com/741
https://school.programmers.co.kr/learn/courses/5/lessons/110