정적 코드 블록 구조 및 코드 블록 차이

면책 조항 :이 문서는 블로거 원본입니다은 허용 블로거없이 복제 할 수 없다. https://blog.csdn.net/CronousGT/article/details/78390933
패키지가있다;

/ **
* 2017년 10월 29일 ON 크로노스 작성.
* 정적 코드 블록 및 코드 블록 구성의 차이
* /
공용 클래스 day01 {

정적 무효 메인 공개 (문자열 []에 args) {
인격 P1이 인 새로운 새로운 ( "톰") =;
인격 P2는 이용시 새로운 새로운 ( "제리") =;
p1.sayHello을 ();
p2.sayHello ();
}
}

클래스 사람 {
문자열 이름 개인,
정적 INT I = 2; // 정적 변수
는 Person () {}
는 Person (문자열 이름) {
this.name = 이름;
}
// 정적 블록
정적 {
에서 System.out.println는 ( "이리와!" )
// 여기서 우리는 정적 변수의 값을 변경하는 등의 클래스 초기화 동작을 수행
I는 I = 1 + 단계;
}
sayHello가 공개 무효화 () {
에서 System.out.println ( "이름 ="이름 + + ", I ="+ I);
}
}
다음 콘솔 출력된다 :

나는에 왔어요!
= 톰 이름, I =. 3
명 = 제리, I =. 3

우리는 콘솔의 출력이 클래스의 역할의 정적 부분을 차단하는 것이 이해할 수있다, 그것은 단지 우리가 정적 변수의 예를 사용하여 여기에, 초기화 클래스에 대해 한 번 실행됩니다, 우리는 초기화

난이 난 동일 후에 생성 된 모든 객체의 값이 3의 값을 초기화한다.

 

우리가 코드 블록 구조를 살펴 보자

있다 포장재

/ **
. *를 2017년 10월 29일 크로노스 ON 작성자
구별 * 코드 블록의 코드 구성의 정적 블록
* /
공용 클래스 day01 {

공공 정적 무효 메인 (문자열 []에 args) {
인격 새로운 새로운 인격 P1 = ( "톰");
인격 P2는 사람 새 새 ( "제리"=);
//p1.sayHello ();
//p2.sayHello ();
}
}

클래스는 Person {
개인 문자열 이름,
인격 () {}
는 Person (문자열 이름 ) {
this.name = 이름;
}
// 코드 블록 구성
{
크라이 ();
}
공공 공극 크라이 () {
에서 System.out.println ( "꺼리고 있는거야 !!!"+ 이름);
}
공공 무효의 sayHello () {
에서 System.out.println ( "이름 ="이름 +);
}
}
: 여기에서 우리는 우리 것 p1.sayHello ()와 p2.sayHello ()가 모든 주석 다음과 같이 콘솔이 인쇄되어 찾아 볼
꺼리고 있는거야을! ! !
꺼리고 있는거야! ! ! 널 (null)

각각의 오브젝트 정보는 제 오브젝트의 초기화를 위해 구성된 초기화 코드 블록 콘텐츠를 호출하고, 널 블럭 콘텐츠 생성자를 우선적으로 실행하도록 구성되는 이름 = 의해 설명 될 수있다.

다음과 같이 요약 :

주로 하나 개의 클래스 초기화 동작 코드의 정적 블록에 작용 한 번만 수행;

코드 블록은,이 때문에 구성 및 우선 순위 함수만큼 오브젝트가 생성 될 때 실행되고, 오브젝트가 주로 초기화 동작에 사용되는 물체에 작용하도록 구성되고;

추천

출처www.cnblogs.com/mark5/p/11069644.html