본문 바로가기

자바 JAVA

상수는 왜 final 예약어로 선언하나요? - 자바 기초

final 예약어가 어떻게 사용되는지 작성된 예제코드를 보자

 

package sample;

class Card
{
	final int NUMBER;
	final String KIND;
	
	static int width = 100;
	static int height = 250;
	
	Card(String kind, int num)
	{
		KIND = kind;
		NUMBER = num;
	}
	
	Card()
	{
		this("HEART", 1);
	}
	
	void cardNothing
	{

	}
}

public class Sample
{

	public static void main(String[] args)
	{
		Card c = new Card("Heart", 10);
		System.out.println(c.KIND);
		System.out.println(c.NUMBER);
	}

}

상수의 특징

1. 상수명은 대문자로 쓴다.

2. 예약어 final은 상수명 앞에 쓴다.

 

3. 상수로 선언되면 값을 변경할 수 없다.

ex) main메소드에서 NUMBER에 정수값 5를 대입하려 하면 오류가 발생한다.

 

c.NUMBER = 5;	// 상수 값은 변경불가

 

 

4. 상수는 선언과 동시에 값을 지정해야 한다.

단, 생성자에서 상수 값을 지정할 경우는 상수 선언과 동시에 지정하지 않아도 된다.

상수면 숫자로 넣으면 되지 왜 굳이 final예약어로 상수를 지정하나?

상수정의를 하지 않고 숫자 그대로를 상수로 쓴다면 다음과 같은 문제점이 발생한다.

 

예를들어 포인트적립 관련 프로그램을 작성한다고 해보자.

결제금액의 10%를 포인트로 적립하고, 코드양이 많지 않아

숫자 10을 상수 선언 하지 않고 프로그래밍을 완료했다.

 

그렇게 시간이 흘러 코드 양은 많아지고.........

 

이 때, 갑자기 정책이 변경되어 결제금액의 15%를 포인트로 적립하려고 한다.

코드마다 숫자 10을 사용하였으니, 일일이 15로 수정해야하는 불상사를 겪어야한다.

 

final로 상수를 선언했다면, final 상수만 10에서 15로 바꿔주면 코드가 일괄적으로 변경된다.

 

결론적으로, 유지보수성의 향상을 위해서 사용하는 것이 final 예약어로 선언하는 상수.