看到这个标题的读者,在你们的心里多多少少都有自己的答案,下面说一下我的答案....我这里安装了jclasslib Bytecode viewer插件,方便查看字节码....下面是测试代码,一个静态方法query,一个普通方法shadow,这两个方法的参数和函数体完全一样.
// 静态方法
public static void query(String year) {...query方法的局部变量表,如下
shadow方法的局部变量表,如下
我们发现,非静态方法shadow的局部变量表中有this,而在静态方法query的局部变量表中没有this....在普通方法中,在它的局部变量表中的第一个槽存放了this, 而静态方法的局部变量表中没有存放this.