没有区别(除了你提到的).编译器足够聪明.如果我编译以下类:
public class Test {
public static void main(String[] args) {
Long foo = (long) 0;
Long bar = 0L;
}
}
然后反编译它们:
$javap -c Test.class
Compiled from "Test.java"
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: lconst_0
1: invokestatic #2 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
4: astore_1
5: lconst_0
6: invokestatic #2 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
9: astore_2
10: return
}
我没有看到任何区别.使用一个看起来更好或符合约定的一个.
要验证反编译器,我将这两行独立编译,然后计算校验和:
$sha1sum Test.class_L Test.class_long
292a93b6433b5a451afdb41bd957667c91eebf23 Test.class_L
292a93b6433b5a451afdb41bd957667c91eebf23 Test.class_long