A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 姚海明 于 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();
}
}
创建多个对象也是执行一次?

5 个回复

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

谢谢,懂了
回复 使用道具 举报
静心明德 发表于 2015-4-14 13:48
对的啊,静态代码块只执行一次,就是在类加载的时候,除非你删了.class文件,在编译执行的时候会重新加载一 ...

谢谢了,懂了
回复 使用道具 举报
静态代码块   优先于对象建立,和对象没关系
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马