자바(JAVA) 기초 함께 알아보자

자바(JAVA) 기초 함께 알아보자(21) - 상수(Constant) / static

jay_the_code 2025. 1. 8. 20:52

지난번 예외처리(Exception)에 이어서

이번글에서는 상수(Constant)static에 대해서
알아보겠습니다.

상수(Constant)

 

먼저 상수(Constant)의 개념에 대해서
완벽히 이해하기 위해서는 상수가 사용되는
상황에 대해서 알아야 합니다.

아래 예시를 통해서 살펴보겠습니다.

// 은행의 대출
public class Loan{
	double interestRate;
    double year;
    
    Loan(double interestRate, double year){
    	this.interestRate = interestRate;
        this.year = year;
    }
}

 

은행의 대출을 통해서 상수(Constant)의 개념을
이해해 보겠습니다.

위의 코드를 살펴보면 현재 interestRate라는 변수에

쉽게 접근하여 이자율을 바꿀 수 있다는 것을 확인할 수 있습니다.

하지만 만약에 누군가가 쉽게 이자율을 변경할 수 있다면
분명히 시스템에 큰 문제가 생길 것입니다.

따라서 자바에서는 한번 초기화하면 그 값을 변경할 수 없는
키워드를 제공하고 이를 상수(Constant)라고 합니다.

변수를 상수로 만드는 방법은
데이터 타입 앞에 'final' 이라는 키워드를
사용하는 것입니다.
(ex: final double interestRate)

 

아래 코드에서 그럼 interestRate를 상수로 변경하고
다시 살펴보겠습니다.

public class Loan{
	// Constant로 만들기
    // SNAKE_CASE 표기법으로 표기하기
	final double INTEREST_RATE;
    double year;
    
    Loan(double interestRate, double year){
    	this.INTEREST_RATE = interestRate;
        this.year = year;
    }
}

 

상수(Constant)로 지정하기 위해 'final'을 데이터 타입 앞
사용해 줍니다.

 

표기할 때는 SNAKE_CASE로 표기해 줍니다.
이는 필수는 아니지만 불문율로 지켜주면
다른 사람들이 코드를 확인할 때 편리합니다!

참고로 SNAKE_CASE는 글자는 전부 대문자,
띄어쓰기는 _ 로 표기합니다. 

public class Loan{
	// Constant로 만들기
    // SNAKE_CASE 표기법으로 표기하기
	final double INTEREST_RATE;
    double year;
    
    Loan(double interestRate, double year){
    	this.INTEREST_RATE = interestRate;
        
        // 값을 변화시키려고 하면
		// 오류가 발생하는 것을 확인할 수 있습니다.
        this.INTEREST_RATE += 0.05;
        
        this.year = year;
    }
}


위 코드를 visual studio에 넣어보면
자바 컴파일러가 상수의 값의 변화를
감지하고 오류를 발생시키는 것을
확인할 수 있습니다.

다음으로 상수(Constatn)와 함께 많이 쓰이는

'static' 키워드에 대해서 알아보겠습니다.

static

 

자 그럼 먼저 'static' 키워드의 역할에 대해서
알아보겠습니다.

static 키워드를 변수(attribute)에 적용하게 되면
변수를 클래스의 모든 인스턴스에서 공유해서
사용 수 있습니다.

class group{
	static final int k = 3;
    
    group(){}
}

public class test{
	public static void main(String[] args){
    	group g1 = new group();
        group g2 = new group();
        group g3 = new group();
        
        System.out.println(group.k);
    }
}

 

위 코드에서 살펴보면 int k는 static이 적용되었기 때문에

인스턴스 g1, g2, g3 모두에서 동일하게 공유되고 3이라는
값을 가지게 됩니다.

static이 적용된 변수의 경우 위에서 보시는 것과 같이
'클래스명.변수명'과 같은 형태로 사용가능합니다.

그럼 아래에서 static과 상수를 함께 사용하는 예시를
살펴보겠습니다.

public class Loan{
	// Constant 상수만
	final double INTEREST_RATE;
    
    // static 과 Constant 조합
    static final double MINIMUM_INTEREST_RATE = 0.05;
    int year;
    
    Loan(double interestRate, int year){
    	if(interestRate < MINIMUM_INTEREST_RATE){
        	this.INTEREST_RATE = MINIMUM_INTEREST_RATE;
        }else{
        	this.INTEREST_RATE = interestRate;
        }
        this.year = year;
    }
}

 

위와 같이 상수와 static 키워드를 조합해서 사용하는
상황이 많이 있으니 잘 숙지해 주시길 바랍니다!

그럼 지금까지 상수(Constant)static 키워드에 대해서
알아보았습니다.

다음 글에서는 열거형(enumeration)에 대해서 알아보겠습니다.