后续:
测试类
两个测试类如下
class TestMethodA {
static String name = "akioss";
}
class TestMethodB {
static final String name = "akioss";
}
查看字节码
通过javap指令查看两个类的字节码
classA
class com.akioss.TestMethodA {
static java.lang.String name;
com.akioss.TestMethodA();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
static {};
Code:
0: ldc #2 // String akioss
2: putstatic #3 // Field name:Ljava/lang/String;
5: return
}
可以看到除了默认的构造方法之外,还有一个静态代码块,执行了putstatic指令
classB
class com.akioss.TestMethodB {
static final java.lang.String name;
com.akioss.TestMethodB();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
}
构造器+Object方法数?
不明白A、B在方法数上有什么区别
我觉得区别只在A有静态初始化块而B没有