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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hopestar 中级黑马   /  2015-6-9 20:59  /  2280 人查看  /  43 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就结合代码通过调试的方法来分析一下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、该类没有被调用的方法,则不会被执行。
   

评分

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

查看全部评分

43 个回复

倒序浏览
给力啊,正好不懂;
回复 使用道具 举报
这个解释的不错  ,正好也是我不会的一点,受教了   谢谢你 的分享!
回复 使用道具 举报
继续努力,你在码农之路上已经敲出了第一个helloword
回复 使用道具 举报
继续努力,你在码农之路上已经敲出了第一个helloword
回复 使用道具 举报
加油哦~~~
回复 使用道具 举报
很不错,谢谢分享。
回复 使用道具 举报
第七个步为什么会被执行呢??这里应该也没有被执行吧
回复 使用道具 举报
15383016390 发表于 2015-6-10 10:24
第七个步为什么会被执行呢??这里应该也没有被执行吧

是的,我标错了!你看的挺仔细的!!private Show(){
                System.out.println("i am grut");
        };//第七步
回复 使用道具 举报
还没研究过  看看
回复 使用道具 举报
hopestar 发表于 2015-6-10 11:59
是的,我标错了!你看的挺仔细的!!private Show(){
                System.out.println("i am grut"); ...

恩恩,你现在下载入学考试题了吗?感觉怎么样啊?这一期的班还能赶上吗?
回复 使用道具 举报
真的不错!
回复 使用道具 举报
15383016390 发表于 2015-6-10 16:37
恩恩,你现在下载入学考试题了吗?感觉怎么样啊?这一期的班还能赶上吗? ...

郁闷死了,刚刚老师说我的blog地址格式有问题!我现在有新浪博客的地址,接下来我该怎么做呢??尽可能详细点!!谢谢
回复 使用道具 举报
yywishp 来自手机 中级黑马 2015-6-10 18:32:35
14#
过来学习,共勉
回复 使用道具 举报
hopestar 发表于 2015-6-10 18:28
郁闷死了,刚刚老师说我的blog地址格式有问题!我现在有新浪博客的地址,接下来我该怎么做呢??尽可能详 ...

我也不知道,我也是申请的新浪博客,
回复 使用道具 举报
15383016390 发表于 2015-6-10 19:02
我也不知道,我也是申请的新浪博客,

在入学测试区的最下面发这张图片里的内容,然后 在复制你这个主题的地址粘贴到你入学流程所需的文本框里。我就是这样做的,应该是没问题的。

1.png (68.67 KB, 下载次数: 49)

1.png
回复 使用道具 举报
你试过在静态代码快调用静态成员变量吗,看看是谁先执行
回复 使用道具 举报
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("测试专用!!!!静态方法调用非静态方法");
        }
}
  1. class Test
  2. {
  3.         static int i=1;
  4.         static{
  5.                 System.out.println(i);
  6.        
  7.         }
  8.         public static void main(String[] args){
  9.                 Test t=new Test();
  10.                 t.show();
  11.         }
  12.         public void show(){
  13.                 System.out.println("测试专用!!!!静态方法调用非静态方法");
  14.         }
  15. }
复制代码
回复 使用道具 举报
java8023 发表于 2015-6-10 21:10
你试过在静态代码快调用静态成员变量吗,看看是谁先执行

当被调用类加载的时候,就会顺序执行该类的静态属性和静态代码块,谁在前面就执行谁!当执行到静态代码时,静态代码块里的静态成员(包括静态方法和静态属性)则严格顺序执行。
回复 使用道具 举报
hopestar 发表于 2015-6-10 19:17
在入学测试区的最下面发这张图片里的内容,然后 在复制你这个主题的地址粘贴到你入学流程所需的文本框里 ...

对的,我刚看你发表的了,也能进你的博客,那现在通过了吗?
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马