컴 파일 시 상수 와 실행 시 상수
1821 단어 Java-SE
예 를 들 어서 설명해 주세요.
4.567917.결국은 자바 c 의 컴 파일 체제 가 이런 결 과 를 초래 한 것 이다.방법의 호출 과 관련 되 었 을 때,반드시 실행 할 때 만 결 과 를 확정 할 수 있다
예제 코드:
public class TestConstant {
public static void main(String[] args) {
System.out.println(Test.a);
System.out.println(Test.s);
// System.out.println(Test.b);
// System.out.println(Test.a2);
// System.out.println(Test.a3);
// System.out.println(Test.e);
}
}
class Test{
static{
System.out.println("Test ");
}
public static final int a = 10;
public static final int b = "test".length();
public static final String s = "world";
public static Integer a2 = 20;
public static final A a3 = new A();
public static final E e = E.A;
}
class A{
}
enum E{
A,B,C,D,E,F,G
}
4.567917.main 함수 의 인쇄 문 구 를 하나씩 실행 하면 컴 파일 할 때 상수 가 클래스 의 초기 화 를 일 으 키 지 않 고 실행 할 때 상수 가 클래스 의 초기 화 를 일 으 키 는 것 을 발견 할 수 있 습 니 다
4.567917.운영 을 통 해 우 리 는 다음 과 같은 결론 을 얻 을 수 있 습 니 다.컴 파일 할 때 상수 가 기본 유형 이나 String 으로 정의 되 어야 합 니 다.인용 유형 이나 포장 류,매 거 진 것 이 아 닙 니 다
면접 문제:컴 파일 할 때 상수 에 어떤 위험 이 존재 합 니까?
컴 파일 할 때 상수 입 니 다.사용 할 때 원래 클래스 에서 읽 지 않 고 값 으로 직접 쓰 입 니 다.이렇게 하면 문제 가 발생 할 수 있다.만약 에 A 류 가 상수 로 정의 되면 B 류 는 상수 로 사용 하고 모두 컴 파일 을 했다.A 류 의 소스 코드 가 바 뀌 었 을 때 상수 의 값 이 바 뀌 었 다.우 리 는 A 류 를 재 컴 파일 했 지만 B 류 를 재 컴 파일 하지 않 았 다.그러면 B 류 에 사 용 된 것 은 원래 A 류 의 상수 값,즉 구 값 이다.이것 은 위험 의 발생 을 야기 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
컴 파일 시 상수 와 실행 시 상수Public static final int a=10 은 컴 파일 할 때 상수 입 니 다.컴 파일 된 기호 에서 a 를 찾 을 수 없고 a 에 대한 모든 인용 이 20 으로 바 뀌 었 습 니 다.그것 은 클래스 에 의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.