2019년 5월 25일 토요일

Java Static Initializer Block







 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);
  } 
 }

}

댓글 없음:

댓글 쓰기