Static Initializer Block 참고: https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
Static 초기화 블럭이라고 부르는데, Static으로 선언된 변수는 메모리 공간에 한 번 올라가서 모든 객체들이 공유할 수 있는 변수이다.
그러한 static 변수를 초기화 할 때 단순히 값을 초기화를 할 수도 있지만 개발 과정 중에 복잡한 초기화 조건이 있을 수 있다.
그럴 때 Static Initializer Block을 사용한다.
개발을 하다보면 static 변수가 초기화 될 때 어떤 조건일 경우 예외 처리를 해줘야 한다던지, 값이 상황에 따라 다르게 초기화를 해야 할 때가 있을 것이다.
문법은 단순하다.
static {
//초기화 할 내용
}
아래는 Static Initializer Block 사용 예제이다.
B는 밑변, H는 높이이며 둘을 곱하여 평행사변형 면적이 나온다.
Scanner로 B,H를 입력받는데 길이가 음수가 들어올 수 있는 상황은 막아야 한다.
고로, 길이가 음수일 때에는 flag를 false로 세팅하고 이 flag가 true 일때만 면적 계산이 되도록 한다.
public class Solution {
static Scanner sc = new Scanner(System.in);
static boolean flag = true;
static int B = sc.nextInt();
static int H = sc.nextInt();
static {
if(B <= 0 || H <=0){
flag = false;
System.out.println("java.lang.Exception: Breadth and height must be positive");
}
}
public static void main(String[] args){
if(flag){
int area=B*H;
System.out.print(area);
}
}
}
댓글 없음:
댓글 쓰기