私のJavaクラス
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
質問1:コンパイラが最終的な整数(constantInteger)値を5に置き換えないのはなぜですか?しかし、文字列の場合は置き換えました!
整数変数の最後のキーワードを削除する場合
Javaコード:
private static Integer constantInteger = 5;
バイトコード:
LINENUMBER 10 L1
GETSTATIC TestClass.constantInteger : Ljava/lang/Integer;
INVOKEVIRTUAL java/lang/Integer.intValue()I
BIPUSH 7
バイトコードは、2つの異なる場合(static final Integer、static Integer)で同じです。
質問2:では、整数をfinalにすることの使用法は何ですか?