[Think in java]정적 데이터 초기 화
2176 단어 자바
package com.test.two;
public class Test4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("creating new cupboard in main ....");
new Cupboard();
System.out.println("creating new cupboard in main....");
new Cupboard();
table.f2(1);
cupboard.f3(2);
}
static Table table = new Table();
static Cupboard cupboard = new Cupboard();
}
class Bowl{
Bowl(int marker){
System.out.println("Bowl(" + marker + ")");
}
void f1(int marker){
System.out.println("f1(" + marker + ")");
}
}
class Table{
static Bowl bowl1 = new Bowl(1);
Table(){
System.out.println("Table()");
bowl2.f1(1);
}
void f2(int marker){
System.out.println("f2(" + marker + ")");
}
static Bowl bowl2 = new Bowl(2);
}
class Cupboard{
Bowl bowl3 = new Bowl(3);
static Bowl bowl4 = new Bowl(4);
Cupboard(){
System.out.println("Cupboard()");
bowl4.f1(2);
}
void f3(int marker){
System.out.println("f3(" + marker + ")");
}
static Bowl bowl5 = new Bowl(5);
}
==============output=====================
Bowl(1) Bowl(2) Table() f1(1)Bowl(4) Bowl(5) Bowl(3) Cupboard() f1(2)creating new cupboard in main .... Bowl(3) Cupboard() f1(2) creating new cupboard in main.... Bowl(3) Cupboard() f1(2) f2(1) f3(2)
=================================================
초기 화 순 서 는 먼저 정적 대상 이 고 그 다음 에'비 정적'대상 입 니 다.그리고 정적 대상 은 한 번 만 초기 화 되 고 초기 화 되 지 않 습 니 다.
대상 의 생 성 과정 을 정리 하고 Dog 클래스 라 고 가정 합 니 다.
1.static 키 워드 를 명시 적 으로 사용 하지 않 아 도 구조 기 는 사실상 정적 인 방법 이다.따라서 Dog 형식의 대상 을 처음 만 들 때(구조 기 는 정적 방법 으로 볼 수 있 습 니 다)또는 Dog 류 의 정적 방법/정적 도 메 인 이 처음 방문 되 었 을 때 자바 해석 기 는 클래스 경 로 를 찾 아 Dog.class 파일 을 찾 아야 합 니 다.
2.Dog.class 를 불 러 옵 니 다.정적 초기 화 에 관 한 모든 동작 이 실 행 됩 니 다.따라서 정적 초기 화 는 class 대상 이 처음 불 러 올 때 만 실 행 됩 니 다.
3.new Dog()로 대상 을 만 들 때 먼저 더미 위 에 Dog 대상 에 게 충분 한 저장 공간 을 분배 합 니 다.
4.이 저장 공간 은 삭 제 됩 니 다.Dog 대상 의 모든 기본 형식 데 이 터 를 기본 값 으로 자동 으로 설정 합 니 다.인용 형식 은 null 로 설정 합 니 다.
5.필드 정의 에 나타 나 는 모든 초기 화 동작 을 수행 합 니 다.
6.구조 기 를 실행 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.