java -- initialization block ( 초기화 블록 )


참고 : https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

          http://stackoverflow.com/questions/12550135/static-block-vs-initializer-block-in-java

         http://www.thejavageek.com/2013/07/21/initialization-blocks-constructors-and-their-order-of-execution/

        https://www.youtube.com/playlist?list=PLmCsXDGbJHdhaAC8UP3kbG1ZQM1duQGDN  ==> 동영상



** 위의 Youtube 동영상 강좌 먼저 보기 !!!!



멤버변수 ( field ) 초기화의 예 


    private int a = 3



그러나 이경우에는 초기화시에 에러 핸들링이나, for loop 를 이용한 배열 초기화 같은 복잡한 것은 못한다. 


==> 해결책 : 

 1) 인스턴스 변수의 경우 ( 3가지 방법 )

    - 생성자에서 복잡한 초기화 가능 

    - 또는 initializer block 사용.

    - 또는 final method 사용.


2) 클래스 변수의 경우

  - static initialization block 사용



** 인스턴스 초기화 블럭 ( instance initializer block )

  - 객체 생성할때마다 호출됨.

  - super 생성자 이후에 실행됨.

  - 생성자 보다 먼저 실행됨.

  - 모든 생성자의 공통 코드를 instance initializer block 에 넣으면 코드 줄일수 있다.



** 클래스 초기화 블럭 ( static initializer block )

  - class 로딩시에 호출된다.

  - 인스턴스 변수나 인스턴스 메소드에 접근 못함. 



<< 예제 >>





-- 실행 결과





<< 아래와 같이 코드를 변경한 경우에는 >>




--- 실행 결과





Posted by 자유프로그램