내 자바 클래스최종 문자열
private static final String constantString = "Constant";
private static final Integer constantInteger = 5;
public static void main(String[] args) {
String s2 = constantString + "append"; // LINENUMBER 9
Integer i2 = constantInteger + 7; // LINENUMBER 10
}
바이트 코드
LINENUMBER 9 L0
LDC "Constantappend"
ASTORE 1
L1
LINENUMBER 10 L1
GETSTATIC TestClass.constantInteger : Ljava/lang/Integer;
INVOKEVIRTUAL java/lang/Integer.intValue()I
BIPUSH 7
IADD
질문 주전 골키퍼 : 왜 컴파일러 5 최종 정수 (constantInteger) 값을 대체하지만, 문자열은하지 않았다!
정수 변수 최종 키워드를 제거하면
자바 코드 :
private static Integer constantInteger = 5;
바이트 코드 :
LINENUMBER 10 L1
GETSTATIC TestClass.constantInteger : Ljava/lang/Integer;
INVOKEVIRTUAL java/lang/Integer.intValue()I
BIPUSH 7
바이트 코드는 두 가지의 경우와 동일하다 (정적 최종 정수 , 정적 정수)
질문 2 : 그렇다면 Integer를 final로 사용하는 것은 무엇입니까?
"그렇다면 Integer final을 만드는 용도는 무엇입니까?" 컴파일러는 값을 변경할 수 없습니다. – leonbloy