Java의 static 정적 코드 블록 사용 상세 정보

2807 단어 javastatic코드
하나.정적 방법과의 비교
일반적인 상황에서 만약에 일부 코드가 프로젝트가 시작될 때 실행해야 할 때 정적 코드 블록을 사용해야 하는데 이런 코드는 주동적으로 실행된다.프로젝트가 시작될 때 초기화해야 합니다. 대상을 만들지 않은 상황에서 다른 프로그램이 호출할 때 정적 방법을 사용해야 합니다. 정적 방법은 클래스가 불러올 때 불러옵니다. 예를 들어main 방법은 정적이어야 합니다. 이것은 프로그램 입구입니다.두 가지 차이점은 정적 코드 블록이 자동으로 실행된다는 것이다.정적 방법은 호출될 때만 실행된다.
2.정적 방법 고려 사항
클래스의 정적 방법을 사용할 때 주의:
a. 정적 방법에서는 같은 종류의 다른 정적 구성원(변수와 방법 포함)만 직접 호출할 수 있을 뿐 클래스의 비정적 구성원에 직접 접근할 수 없다.이것은 비정적 방법과 변수에 대해 클래스의 실례 대상을 먼저 만든 후에야 사용할 수 있고, 정적 방법은 사용하기 전에 사용할 수 있기 때문이다
객체를 만들 필요가 없습니다.
b. 정적 방법은this와 슈퍼 키워드를 어떤 방식으로든 인용할 수 없습니다. 정적 방법은 사용하기 전에 실례 대상을 만들 필요가 없기 때문입니다. 정적 방법이 호출될 때this가 인용하는 대상은 전혀 발생하지 않습니다(this 키워드는 방법 내부에서만 사용할 수 있고'호출 방법에 대한
개체 참조).
정적 변수는 특정한 대상에 속하지 않고 전체 종류의 변수에 속한다.어떤 방법도 체내의 변수를 정태로 표시할 수 없습니다. 예를 들어fun() {static int i=0;/불법입니다.} 
셋.절차를 예로 들다

public class TestStaticCon {
     public static int a = 0;

     static {
         a = 10;
         System.out.println(" a=" + a);
     }

     {
         a = 8;
         System.out.println(" a=" + a);
     }

     public TestStaticCon() {
         this("a :" + TestStaticCon.a); //
         System.out.println(a);
         System.out.println(" a=" + a);
     }

     public TestStaticCon(String n) {
         System.out.println(n);
         System.out.println(a);

     }

     public static void main(String[] args) {
         TestStaticCon tsc = null;
         System.out.println("!!!!!!!!!!!!!!!!!!!!!");
         tsc = new TestStaticCon();
     }
 }


a=10
!!!!!!!!!!!!!!!!!!!!!
a=8
a :10
8
8
a=8
4.네티즌 제공

public class StaticBlock {

     static {
         System.out.println(" ");
     }
     {
         System.out.println(" , ");
     }

     public StaticBlock() {
         System.out.println(" ");
     }

     public static void main(String[] args) {
         new StaticBlock();
         new StaticBlock();
     }

 }
.결론: 정적 코드 블록은 클래스가 불러올 때 자동으로 실행되고, 비정적 코드 블록은 대상을 만들 때 자동으로 실행되는 코드이며, 대상을 만들지 않으면 이 클래스의 비정적 코드 블록을 실행하지 않는다.또한 실행 순서는 정적 코드 블록 - 비정적 코드 블록 - 구조 함수입니다.
그 중에서 궁금한 것은'a가 부류대참구조방법에서의 값:10'이었다. 그때 왜 8이 아니었는지, debug(F11, 단점을 직접 설정하고 운행할 수 없다. 그러면 직접 운행과 다름없다)를 생각해 보니 무참구조방법에 먼저 들어갔다.첫 번째 문장을 실행하고 다른 구조 방법으로 전환했습니다. (옳든 그르든 첫 문장은 실행해야 합니다. 이때 a든 10이든 비정적 코드 블록은 아직 실행되지 않았습니다.) 이 문장이든 원본을 찾을 수 없습니다. 이 문장이든 이 경고(오류가 아닙니다. 프로그램이 계속 정상적으로 실행되기 때문입니다)를 제시한 다음에 비정적 코드 블록을 실행했습니다. 이어서 참고가 있는 구조 방법에서 계속 실행했습니다.

좋은 웹페이지 즐겨찾기