java - Jake Whartoon大神Twitter上发的一个问题,求大神解释
PHP中文网
PHP中文网 2017-04-17 16:47:21
[Java讨论组]

后续:

测试类

两个测试类如下

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."":()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."":()V
       4: return        
}
PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
巴扎黑

构造器+Object方法数?
不明白A、B在方法数上有什么区别
我觉得区别只在A有静态初始化块而B没有

怪我咯

2,1

LZ可以参考上面的解释WHY

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号