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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gzp123 中级黑马   /  2015-5-8 22:30  /  810 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

主类中有main方法,main方法上下各有一个静态代码块,是先执行main还是先执行main方法下的静态代码块呢?

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 不错

查看全部评分

14 个回复

正序浏览
先加载静态代码块!也是可以最先调用!main那是实例化之后才能调用的!请参考!
回复 使用道具 举报
不管怎么写,先执行的一定是main,因为main是程序的入口。至于静态代码块是先加载到内存中,整个程序执行完毕在释放。
回复 使用道具 举报
。。。这个真心看不懂。
回复 使用道具 举报
主函数是虚拟机执行入口,但执行前应该需要加载主函数所在的类的字节码文件进行初始化吧……
回复 使用道具 举报
楼上正解,静态代码块随着类的加载而加载,优先于主函数执行!
回复 使用道具 举报
先执行上面的,因为最早加载的是类,所以类中的静态成员最早跟着加载,在Main中的静态代码块基本算是局部代码块了,主函数也是函数方法。
回复 使用道具 举报
Cat 中级黑马 2015-5-9 21:56:29
9#
学习了~
回复 使用道具 举报
先执行静态代码块。。。。
回复 使用道具 举报
先执行main
回复 使用道具 举报
我记的是先执行静态代码块
回复 使用道具 举报
必须静态代码块先执行啊。
回复 使用道具 举报
先执行静态代码块
回复 使用道具 举报
静态代码块随着类的加载而加载,所以它优先于主方法执行,具体看下面代码:
public class StaticDemo1 {
        static {
                System.out.println("我是静态代码块1");
        }
        public static void main(String[] args) {
                System.out.println("我是主方法");       
        }
        static {
                System.out.println("我是静态代码块2");
        }
}
//结果是:   我是静态代码块1
               我是静态代码块2
               我是主方法

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
那必须是先执行主函数main, 你的class文件是由JVM虚拟机调用 才能运行的。而main方法是JVM虚拟机运行代码的接口,就是说jvm需要调用主函数里的main方法才能执行你的其他代码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马