黑马程序员技术交流社区
标题:
关于静态代码块
[打印本页]
作者:
java冬冬
时间:
2013-4-19 14:57
标题:
关于静态代码块
本帖最后由 java冬冬 于 2013-4-19 18:34 编辑
main函数不是程序入口嘛,为什么先执行静态代码块
class StaticCode
{
static
{
System.out.println("a");
}
}
class StaticCodeDemo
{
static
{
System.out.println("b");
}
public static void main(String[] args)
{
new StaticCode();
new StaticCode();
System.out.println("over");
}
static
{
System.out.println("c");
}
}
复制代码
1.jpg
(5.03 KB, 下载次数: 221)
下载附件
2013-4-19 14:57 上传
作者:
丘凤光
时间:
2013-4-19 15:13
静态代码块随着类的加载而执行,且只执行一次,程序需要先加载StaticCodeDemo类才能进入main函数
作者:
先小涛
时间:
2013-4-19 15:15
静态代码块是随着类的加载而执行的,并只执行一次(因为类只加载一次即可)。显然,程序要执行,首先要加载类,执行静态代码块,然后执行main方法。因为静态代码块的作用就是初始化类的;构造函数是初始化对象的。
作者:
艾萱
时间:
2013-4-19 16:15
一个类可以使用不包含在任何方法体重的静态代码块,当类被载入时,静态代码块被执行,且只执行一次。静态代码块经常用来进行类属性的初始化。
特点:随着类的加载而执行,只执行一次,用于给类进行初始化。
作者:
庄生晓梦
时间:
2013-4-19 16:54
静态代码块是随着类的加载而执行,并且只执行一次,可以对类进行初始化,它是优先于主函数存在的。
作者:
杜成龙
时间:
2013-4-19 17:29
main函数是程序的入口没错,但是程序需要进入main函数所在的类中才能找到main函数,所以在调用main函数时就已经加载了该类,静态代码块随着类的加载而执行,
所以该类中的两个静态代码块先执行,用来初始化该类,所以首先输出显示b,c;
然后才会进入main函数,main函数中有创建对象new StaticCode();的动作,这时就会调用类StaticCode,同样该类中静态代码块会执行,并且只执行一次,尽管你创建两个对象,所以这时只输出一个a,最后输出主函数中的over。
作者:
up.yfei
时间:
2013-4-19 17:36
main函数是程序入口不错,但是静态代码块是随着类的加载而执行的,所以优先于main方法,说简单一点,就是说main方法只是让java虚拟机知道到执行哪里,而真正执行的时候,类一加载,还是先执行静态代码块。
作者:
java冬冬
时间:
2013-4-19 18:35
多谢各位啦,愿在黑马见{:soso_e152:}
作者:
伊廷文
时间:
2013-4-19 18:49
因为静态代码块在类加载的时候就创建了,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2