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

bxdg42578670 2008-09-22 04:03:06



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

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


class Test1 { //此对象无法实例化,也无法装载,

static {
System.out.println(A);
}
public static void print() {
System.out.println(A);
}
private static final int A = 121; //原因在这里!

}


代码二:

class Test1 { //可以运行的程序!

public static void print() { //静态方法没有Load到内存?》
System.out.println(A);
}
private static final int A = 121;
static {
System.out.println(A);
}


}




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

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



...全文
238 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
EDDGA 2008-09-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 czx33859066 的回复:]
http://blog.csdn.net/czx33859066/archive/2008/09/22/2962706.aspx
这里就有写了,写的很清楚
[/Quote]

谢谢!~
czx33859066 2008-09-22
  • 打赏
  • 举报
回复
http://blog.csdn.net/czx33859066/archive/2008/09/22/2962706.aspx
这里就有写了,写的很清楚
ZangXT 2008-09-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 EDDGA 的回复:]
好像明白,但是又好像模糊。static块和static量应该是无条件load入内存的吧,那个“顺序”该怎样理解才对?
[/Quote]
写代码测试.
EDDGA 2008-09-22
  • 打赏
  • 举报
回复
好像明白,但是又好像模糊。static块和static量应该是无条件load入内存的吧,那个“顺序”该怎样理解才对?
qj123456_0 2008-09-22
  • 打赏
  • 举报
回复
我的理解是这样的。第一段程序之所以有问题。是因为在类加载器加载Test1类的时候就会运行里面的static块。而这个时候变量A还没有定义。所以有错。
第二段程序中static块是在A定义之后定义的,所以运行就没有问题了。
至于print方法。在类加载的时候只是将它的定义加载进来。并不会执行,所以是否定义了A并没有影响。
ZangXT 2008-09-22
  • 打赏
  • 举报
回复
方法都在方法区里面,跟静态不静态有多大关系?
lizhi1026 2008-09-22
  • 打赏
  • 举报
回复
静态初始化块不管放在程序哪里,都会在public static void main(string args[])这个主入口函数之前运行。
静态方法和静态变量和他有关系么?。。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧