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