
两个测试类如下
class TestMethodA {
static String name = "akioss";
}
class TestMethodB {
static final String name = "akioss";
}
通过javap指令查看两个类的字节码
class com.akioss.TestMethodA {
static java.lang.String name;
com.akioss.TestMethodA();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return
static {};
Code:
0: ldc #2 // String akioss
2: putstatic #3 // Field name:Ljava/lang/String;
5: return
}
可以看到除了默认的构造方法之外,还有一个静态代码块,执行了putstatic指令
class com.akioss.TestMethodB {
static final java.lang.String name;
com.akioss.TestMethodB();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
构造器+Object方法数?
不明白A、B在方法数上有什么区别
我觉得区别只在A有静态初始化块而B没有
2,1
LZ可以参考上面的解释WHY