我的java類最後絃樂VS最終整數
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
問題NO1:爲什麼編譯器不能用5替換最終整數(constantInteger)值,但字符串不是沒有!
如果除去最後關鍵字爲整數變量
Java代碼:
private static Integer constantInteger = 5;
字節代碼:
LINENUMBER 10 L1
GETSTATIC TestClass.constantInteger : Ljava/lang/Integer;
INVOKEVIRTUAL java/lang/Integer.intValue()I
BIPUSH 7
字節代碼是在兩種不同的情況相同的(靜態最終整數,靜態整數)
問題2:那麼使Integer最終有什麼用?
「那麼Integer最終的用途是什麼?」編譯器不會讓你改變它的值。 – leonbloy