나는 아래에 간단한 자바 프로그램이있다. 인스턴스 정수 변수 "x1"및 "x2"선언했다 내 클래스 생성자에서 매개 변수를 초기화하십시오. "x1"과 "x2"의 차이를 계산하는 정수 변수 "diff"도 선언했지만 변수는 0을 반환합니다! 문제가 어디에 있는지, 생성자 매개 변수가 0이 아님을 알 수 없습니다 !!!. 내가 어떤 도움인스턴스 변수를 초기화하는 동안 왜 제로가됩니까?
public class Smallest {
int x1;
int x2;
public Smallest(int a,int b){
this.x1=a;
this.x2=b;
}
int diff = x2 - x1;
public void draw(){
System.out.println("X1= "+ x1 +"\n X2= "+ x2 +"\n diff= " +diff);
}
public static void main(String[] args) {
Smallest small=new Smallest(10,20);
small.draw();
}
}
에게 감사합니다 여기 DIFF는 컴파일 시간 동안 설정 한 방법에 있지 않기 때문에 이것은 출력
X1= 10;
X2= 20;
diff= 0;
'diff'는'x2 - x1'의 결과로 생성자를 호출하기 전에 초기화되기 때문에'0'입니다. – BackSlash
그래서 인스턴스 변수가 생성 중에 초기화되지 않으면 인스턴스 변수가 기본값으로 초기화된다는 것을 의미합니까? 내 말은, 그들은 생성자보다 먼저 실행 되는가? 나는 자바 컴파일러가 기본 시퀀스 실행을 따를 것이라고 생각 했는가? –
예, 생성자가 호출되기 전에 * 초기화됩니다. – BackSlash