黑马程序员技术交流社区

标题: 关于静态代码块只执行一次的问题, [打印本页]

作者: 姚海明    时间: 2015-4-14 13:39
标题: 关于静态代码块只执行一次的问题,
本帖最后由 姚海明 于 2015-4-17 10:44 编辑

java教程中说静态代码块只执行一次(加载类的时候),如果new多个对象的话还是执行一次?会不会出现已经加载的类释放后需要再一次加载的情况?有没有知道工作流程的详细的说一下吧,谢谢。可能表达的不是很清楚,见谅了。。。

class StaticDemo{
static
   {
System.out.println("a");
}
}

class A{
   public static void main(String[] args){
             StaticDemo s1=new StaticDemo();
             StaticDemo s2=new StaticDemo();
}
}
创建多个对象也是执行一次?

作者: 静心明德    时间: 2015-4-14 13:48
对的啊,静态代码块只执行一次,就是在类加载的时候,除非你删了.class文件,在编译执行的时候会重新加载一次。
作者: 晓月清晖明    时间: 2015-4-14 15:03
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
比如main方法就必须是静态的 这是程序入口
两者的区别就是:静态代码块是自动执行的;
静态方法是被调用的时候才执行的.
作者: 姚海明    时间: 2015-4-16 20:31
晓月清晖明 发表于 2015-4-14 15:03
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要 ...

谢谢,懂了
作者: 姚海明    时间: 2015-4-16 20:32
静心明德 发表于 2015-4-14 13:48
对的啊,静态代码块只执行一次,就是在类加载的时候,除非你删了.class文件,在编译执行的时候会重新加载一 ...

谢谢了,懂了
作者: 18561271203    时间: 2015-4-16 20:49
静态代码块   优先于对象建立,和对象没关系




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2