나는Java 코드 실행의 우선 순위 또는 우선 순위를 설명 하시겠습니까?
public class B {
int mB = 5;
public int getBValue(){
return mB;
}
}
public class A {
int mA = b.getBValue();
public static void main(String [] args){
B b = new B();
System.out.println(mA);
}
}
컴파일러는 "기호 B를 찾을 수 없습니다"라는 두 가지 클래스가 있습니다. 그 코드는 먼저 main 메소드에서 실행하고 라인을 순서대로 실행한다는 것을 이해합니다. 그래서 컴파일러가 코드를 읽을 때 먼저 "B b = new B();
"으로 간 다음 b가 정의됩니다. 사실입니까? 범위에서 잘못 되었습니까?
제 2 상태 본인은 :
이public class B {
static int mB = 5;
public static int getBValue(){
return mB;
}
}
public class A {
static int mA = B.getBValue();
public static void main(String [] args){
System.out.println(mA);
}
}
이 상태가 올바르게 작동합니다. Static은 객체 자체가 아니라 클래스 자체에 속합니다. 그래서 모든 정적로드 된 및 프로그램을 실행할 때 초기화됩니다.
그렇다면이 두 주 사이의 핵심은 어디입니까?
'B b = new B();'는 클래스 'A'가 사용할 수있는 변수를 생성하지 않습니다. 그것은 수업의 범위에 있지 않습니다. 이것은'main' 메쏘드를위한 "local"변수 일뿐입니다. –
그래서 우리는 다른 방법과 같은 주요 방법을 다루므로이 방법에 대한 개인 정보는 없습니까? –
'b'에는 전역 범위가 없습니다. 'main' 메쏘드에서만 사용할 수 있으며 _only_는'main' 메쏘드가 끝날 때까지 사용할 수 있습니다. 'main' 메쏘드가 아닌 다른 메쏘드가 있어도'main' 메쏘드에서했던 것처럼'b' 메쏘드를 사용한다고해도'A' 클래스는'b'에 접근 할 수 없습니다 '왜냐하면'b'는 메서드 안의 _local_ 변수이기 때문입니다. –