웹 개발/java

Java #4 상수란?

dani0312 2023. 11. 26. 17:53

◾상수란?

상수(常數)란 수식에서 변하지 않는 값을 의미한다. 

이렇게 변하지 않는 값은 자바에서 final이라는 예약어를 사용하여 선언한다.

 

 

◾상수를 사용하는 이유

상수를 사용하면 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉽고,

혹시 상수 값을 변경해야 한다고 해도 선언한 부분 한 곳만 변경하여 수정할 수 있어 유지보수가 편해진다.

또 값이 변하면 위험한 경우에 상수를 사용하여 막을 수 있다.

 

 

  • 코드에서 값을 보았을 때 의미하는 바를 쉽게 파악할 수 있음 (가독성↑)
  • 값이 수정되더라도 한 곳만 수정해주면 됨 (유지보수 ↑)
  • 값이 변하지 않게 보호해야하는 경우

 

아래 예제를 보면 더 이해하기 쉬울 것이다.

 

 

 

 

◾상수 선언하기

상수는 fianl을 사용하여 선언한다. 아래에서는 선언과 동시에 초기화하는 방법, 선언 후 초기화 하는 방법을 보여준다. 두 방법 모두 가능하지만,  어떠한 방법을 사용하든 상수의 경우에 값을 선언한 뒤에는 수정할 수 없다.

 

 

1. 선언과 동시에 초기화

public class ConstantEx{
	public static void main(String[] args){
    	final int MONTH = 12;
        MONTH = 11; // compile error!
    }
}

이렇게 선언한 후에는 MONTH의 값을 변경할 수 없다. 인텔리제이에서 아래와 같이 이미 값을 할당한 뒤 다시 MONTH에 값을 할당하려고 선언하였을 때 에러가 뜨는 것을 확인할 수 있다.

 

 

 

 

2. 선언 후 초기화

public class ConstantEx{
	public static void main(String[] args){
        final int MONTH;
        MONTH = 12;
        MONTH = 11; //compile error!
    }
}

Month라는 이름의 상수를 선언한 후, 값을 할당할 수 있다. 단 값은 1번만 할당해야하니 그 후 할당하려고 시도한다면 모두 컴파일 에러가 발생한다.

 

 



  • 선언과 동시에 초기화, 선언 후 초기화하여 상수를 선언할 수 있다.
  • final로 선언된 변수는 값을 한 번 할당하면 변경할 수 없다.

 

 

 

 


◾static final

상수는 위의 단락에서처럼 final을 이용하여 선언하지만 보통 static을 함께 사용하여 static final로 많이 선언하여 사용한다.  클래스에서 사용할 멤버 변수의 값을 고정하겠다는 의미이다. 

 

 

 

🤔 static?

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 (X)

MONTH (O)

 

 

 

 

 

 

 

 

 

 

참고 사이트

https://crazykim2.tistory.com/741

https://school.programmers.co.kr/learn/courses/5/lessons/110