首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

静态块/ 静态变量/静态方法之间的区别!解决办法

2012-03-02 
静态块/ 静态变量/静态方法之间的区别![color#000080][size12px]刚才看到一篇帖子这样回答的:java里面

静态块/ 静态变量/静态方法之间的区别!
[color=#000080]

[size=12px]
刚才看到一篇帖子这样回答的: java里面"定义类"的语句没有先后问题

谈谈静态块/ 静态变量/ 静态方法 之间的关系, 先请看一段代码!
代码一:

Java code
class Test1 {                    //此对象无法实例化,也无法装载,        static {    System.out.println(A);    }    public static void print() {    System.out.println(A);    }    private static final int A = 121; //原因在这里!    }


代码二:
Java code
class Test1 {                     //可以运行的程序!                       public static void print() {          //静态方法没有Load到内存?》    System.out.println(A);    }    private static final int A = 121;               static {    System.out.println(A);    }}



由上面的例子看出, 类装载 并没有将静态方法load到内存!~

以上纯属个人看法, 如有错误请给予更正, 还有些区别的话,请给予补充!~ 谢谢!~


[/size]
[/color]

[解决办法]
我的理解是这样的。第一段程序之所以有问题。是因为在类加载器加载Test1类的时候就会运行里面的static块。而这个时候变量A还没有定义。所以有错。
第二段程序中static块是在A定义之后定义的,所以运行就没有问题了。
至于print方法。在类加载的时候只是将它的定义加载进来。并不会执行,所以是否定义了A并没有影响。
[解决办法]
http://blog.csdn.net/czx33859066/archive/2008/09/22/2962706.aspx
这里就有写了,写的很清楚

热点排行