黑马程序员技术交流社区
标题: 分享入口main函数背后的故事 [打印本页]
作者: hopestar 时间: 2015-6-9 20:59
标题: 分享入口main函数背后的故事
就结合代码通过调试的方法来分析一下main入口函数以后程序的方法如下:
class Show {
static{
System.out.println("i am static ");//第二步
}
{
System.out.println("i am not static");//第五步
}
private static int i=10;//第三步
public static void myShow()
{
System.out.println("i am myShow");//没有被执行
}
private int j=100;//第六步
public void weShow()
{
System.out.println("i am weyShow");//第七步
}
private Show(){
System.out.println("i am grut");
};
private static final Show sh=new Show();//第四步
public static Show getShow()//第八步
{
return sh;
}
}
public class DD{
public static void main(String[] arg)
{
Show.getShow();//第一步
}
}
由代码调试验证可知,程序的运行步骤如下:
[size=12.0000pt]1、从程序入口main函数顺序执行。
[size=12.0000pt]2、在顺序执行过程中碰到其他类的调用时,就先执行该类的静态代码块。
[size=12.0000pt]3、执行完静态代码块后,再依次执行该类的静态属性。
[size=12.0000pt]4、执行完该类的静态属性之后,再执行该类的代码块。
[size=12.0000pt]5、执行完该类的代码块在依次执行该类的非静态属性。
[size=12.0000pt]6、执行完该类的非静态属性,在执行该类的构造方法。
[size=12.0000pt]7、执行完该类的构造方法,在执行main函数调用该类的方法。
[size=12.0000pt]8、该类没有被调用的方法,则不会被执行。
作者: 爱java爱生活 时间: 2015-6-9 21:48
给力啊,正好不懂;
作者: 天涯111 时间: 2015-6-9 21:54
这个解释的不错 ,正好也是我不会的一点,受教了 谢谢你 的分享!
作者: QQheima 时间: 2015-6-9 22:25
继续努力,你在码农之路上已经敲出了第一个helloword
作者: QQheima 时间: 2015-6-9 22:27
继续努力,你在码农之路上已经敲出了第一个helloword
作者: msxhm 时间: 2015-6-9 22:32
加油哦~~~
作者: 15383016390 时间: 2015-6-10 10:15
很不错,谢谢分享。
作者: 15383016390 时间: 2015-6-10 10:24
第七个步为什么会被执行呢??这里应该也没有被执行吧
作者: hopestar 时间: 2015-6-10 11:59
是的,我标错了!你看的挺仔细的!!private Show(){
System.out.println("i am grut");
};//第七步
作者: lucien_he 时间: 2015-6-10 14:03
还没研究过 看看
作者: 15383016390 时间: 2015-6-10 16:37
恩恩,你现在下载入学考试题了吗?感觉怎么样啊?这一期的班还能赶上吗?
作者: 仲德明 时间: 2015-6-10 17:13
真的不错!
作者: hopestar 时间: 2015-6-10 18:28
郁闷死了,刚刚老师说我的blog地址格式有问题!我现在有新浪博客的地址,接下来我该怎么做呢??尽可能详细点!!谢谢
作者: yywishp 时间: 2015-6-10 18:32
过来学习,共勉
作者: 15383016390 时间: 2015-6-10 19:02
我也不知道,我也是申请的新浪博客,
作者: hopestar 时间: 2015-6-10 19:17
在入学测试区的最下面发这张图片里的内容,然后 在复制你这个主题的地址粘贴到你入学流程所需的文本框里。我就是这样做的,应该是没问题的。
-
1.png
(68.67 KB, 下载次数: 69)
作者: java8023 时间: 2015-6-10 21:10
你试过在静态代码快调用静态成员变量吗,看看是谁先执行
作者: java8023 时间: 2015-6-10 21:16
class Test
{
static int i=1;
static{
System.out.println(i);
}
public static void main(String[] args){
Test t=new Test();
t.show();
}
public void show(){
System.out.println("测试专用!!!!静态方法调用非静态方法");
}
}- class Test
- {
- static int i=1;
- static{
- System.out.println(i);
-
- }
- public static void main(String[] args){
- Test t=new Test();
- t.show();
- }
- public void show(){
- System.out.println("测试专用!!!!静态方法调用非静态方法");
- }
- }
复制代码
作者: hopestar 时间: 2015-6-10 23:22
当被调用类加载的时候,就会顺序执行该类的静态属性和静态代码块,谁在前面就执行谁!当执行到静态代码时,静态代码块里的静态成员(包括静态方法和静态属性)则严格顺序执行。
作者: 15383016390 时间: 2015-6-11 05:52
对的,我刚看你发表的了,也能进你的博客,那现在通过了吗?
作者: a5231865 时间: 2015-6-11 06:46
好流弊,我先收藏了,后面用~
作者: hopestar 时间: 2015-6-11 11:09
下午六点之前可以批的,现在还没批!等结果,你呢?你到哪一步了??
作者: 15383016390 时间: 2015-6-11 13:00
我写了九篇了,不过都是以前随便写的,以前没看过格式要求什么的,现在想改有点头大啊,
作者: 海角秋风 时间: 2015-6-11 13:21
好好研究一下,学习一下。。。
作者: hopestar 时间: 2015-6-11 15:06
我觉得没有什么很严格的格式啊!你重新梳理一下应该就好了,对了,我的审批通过了!现在要做入学测试题了!你加油哦!!
作者: 15383016390 时间: 2015-6-11 15:11
恩恩,一起加油!!
作者: 杜弦东. 时间: 2015-6-11 15:18
哦!
作者: yang2015 时间: 2015-6-11 19:46
学习学习
作者: cyd1058 时间: 2015-6-11 20:02
学习了,加油
作者: candy_xue 时间: 2015-6-11 20:47
对于初学者 确实是个很不错的demo
作者: 15383016390 时间: 2015-6-22 07:40
同学,你学的怎么样了啊?能入学了吗?
作者: 1958078929 时间: 2015-6-22 07:52
谢谢分享
作者: hopestar 时间: 2015-6-22 20:03
还差最后一步面试了,不知道能不能过呢?你呢?过了没?
作者: a1224577182 时间: 2015-6-22 21:03
感谢分享!!
作者: 十五号的人生 时间: 2015-6-22 21:52
学习了,谢谢楼主
作者: fanrong 时间: 2015-6-22 22:30
解释的很详细,受用了
作者: 金亮0602 时间: 2015-6-22 22:53
解释的不错 ,正好也是我也学习一下
作者: 宝马X6 时间: 2015-6-22 22:56
这个表示看不懂
作者: 几率收割 时间: 2015-6-22 23:08
有些凌乱
作者: liu100chao 时间: 2015-6-22 23:13
个人觉得 ,再加一个构造代码块能更给力!
作者: liu100chao 时间: 2015-6-23 22:06
好!但是你要是什么知识点都自己动手来做的话!需要好长的!时间才能看完视频走完流程
作者: 风一样的少年 时间: 2015-6-23 22:09
很好,支持
作者: liu100chao 时间: 2015-6-26 18:34
说得好!自己动手 ,丰衣足食
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |