IT•개발 끄적/Java

[JAVA] static, final, static final(상수) 사용법 및 예시

소다맛사탕 2021. 6. 15. 20:06
반응형

안녕하세요. 소다맛사탕 입니다.

한 번 초기값이 저장되면 변경할 수 없는 불변의 상수인 'static final'에 대해서 알아보겠습니다.

 

그전에 static과 final의 간단한 설명과 사용법을 알아보겠습니다.

 

1. static

; 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드.

인스턴스에 속한 멤버가 아니라 클래스에 속한 멤버. 클래스 멤버.

class StaticExample {
    // static 필드 선언
    static int circle_dot = 3;
   
    static int square_dot = 4;
    
    // static 메서드 선언
    static int multi(int a, int b){
    	return a * b;
    }
}

// static 멤버 사용 클래스
public class UsedStaticExample {
    public static void main(String[] args) {
        int a = StaticExample.circle_dot;
        int b = StaticExample.square_dot;
        int result = StaticExample.multi(a, b);
		
        System.out.println("꼭지점 곱셈 = " + result);
    }
}

---- 결과 ----

꼭지점 곱셈 = 12

 

2. final

; 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정 불가.

// final 필드 선언 초기화
class Info {
    final String host = "localhost:8080";
    final String url;
	
    public Info(String url) {
	    this.url = url;
    }
}

public class UsedFinalExample {
	public static void main(String[] args) {
       Info testUrl = new Info("/mainType=A&subType=B");
		
        System.out.println(testUrl.host);
        System.out.println(testUrl.url);
		
        String finalUrl = testUrl.host + testUrl.url;
        System.out.println(finalUrl);
    }
}

---- 결과 ----

localhost:8080
/mainType=A&subType=B
localhost:8080/mainType=A&subType=B

 

 

 

간단하게 예시를 통해 static과 final의 사용법과 예시를 알아보았습니다.

이제 static final 에 대해 알아보겠습니다.

 

static final (상수)

; 객체마다 저장되지 않고, 클래스에만 포함.

한 번 초기값이 저장되면 변경할 수 없습니다.

public class UsedStaticFinal {
    // 상수 선언
    static final double INCH = 2.54;
    static final double CM = 1;
    static final double MONITOR_WIDTH;
	
    // 상수 초기값 선언
    static {
    	MONITOR_WIDTH = 14 * INCH * CM;
    }
	
    // 상수 사용
    public static void main(String[] args) {
    	System.out.println("14인치 모니터 cm는? "+ MONITOR_WIDTH);
    }
}

---- 결과 ----

14인치 모니터 cm는? 35.56

 

※ static final이 맞냐, final static 이 맞냐..

결과적으론 전혀 차이가 없습니다.

필드 선언에 있어 고유한 필드 선언 요소인 static과 final은 영향을 받지 않습니다.

일종의 관습같은 느낌?이랄까요..

 

대체적으로 static final은 불변의 값이기에

프로젝트에서 인증키 및 수학적으로 계산된 불변의 값 등등..

저는 최근에 저장할 파일 위치 경로를 걸었습니다.

 

참조 : https://velog.io/@taehee-kim-dev/static-final-static-final