猿问

Jake Whartoon大神Twitter上发的一个问题,求大神解释

后续:

测试类

两个测试类如下


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        

}


DIEA
浏览 521回答 2
2回答

慕的地6264312

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

MM们

2,1LZ可以参考上面的解释WHY
随时随地看视频慕课网APP

相关分类

Java
我要回答