黑马程序员技术交流社区

标题: 谁能帮我看看 [打印本页]

作者: gzp123    时间: 2015-5-8 22:30
标题: 谁能帮我看看
主类中有main方法,main方法上下各有一个静态代码块,是先执行main还是先执行main方法下的静态代码块呢?
作者: xiao7181jun    时间: 2015-5-8 22:38
那必须是先执行主函数main, 你的class文件是由JVM虚拟机调用 才能运行的。而main方法是JVM虚拟机运行代码的接口,就是说jvm需要调用主函数里的main方法才能执行你的其他代码。
作者: 我干阿衰    时间: 2015-5-9 12:35
静态代码块随着类的加载而加载,所以它优先于主方法执行,具体看下面代码:
public class StaticDemo1 {
        static {
                System.out.println("我是静态代码块1");
        }
        public static void main(String[] args) {
                System.out.println("我是主方法");       
        }
        static {
                System.out.println("我是静态代码块2");
        }
}
//结果是:   我是静态代码块1
               我是静态代码块2
               我是主方法
作者: 欧阳文    时间: 2015-5-9 13:04
先执行静态代码块
作者: fenglinluomu    时间: 2015-5-9 15:17
必须静态代码块先执行啊。
作者: 紫夜灵魂    时间: 2015-5-9 16:09
我记的是先执行静态代码块
作者: 柳叶飞刀    时间: 2015-5-9 16:37
先执行main
作者: 知来者之可追    时间: 2015-5-9 19:23
先执行静态代码块。。。。
作者: Cat    时间: 2015-5-9 21:56
学习了~
作者: lzh2015    时间: 2015-5-9 22:19
先执行上面的,因为最早加载的是类,所以类中的静态成员最早跟着加载,在Main中的静态代码块基本算是局部代码块了,主函数也是函数方法。
作者: qian0217wei    时间: 2015-5-10 00:38
楼上正解,静态代码块随着类的加载而加载,优先于主函数执行!
作者: Chans_宇    时间: 2015-5-12 17:57
主函数是虚拟机执行入口,但执行前应该需要加载主函数所在的类的字节码文件进行初始化吧……
作者: 冷雨敲窗被未温    时间: 2015-5-12 18:31
。。。这个真心看不懂。
作者: zhiweiqi    时间: 2015-5-12 20:34
不管怎么写,先执行的一定是main,因为main是程序的入口。至于静态代码块是先加载到内存中,整个程序执行完毕在释放。
作者: !85684009ex    时间: 2015-5-12 21:37
先加载静态代码块!也是可以最先调用!main那是实例化之后才能调用的!请参考!




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